加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs,为指令创建过滤器

发布时间:2020-12-17 17:13:43 所属栏目:安全 来源:网络整理
导读:我试图创建一个角度过滤器,它可以影响绑定到指令的数据的方式,类似于json过滤器可以应用于表达式的方式. 我在这方面遇到了很多麻烦,因为似乎定义一个过滤器不足以处理除内联表达式之外的任何内容.不过,我绝对肯定我以前见过它. 题 是否可以创建一个与指令内
我试图创建一个角度过滤器,它可以影响绑定到指令的数据的方式,类似于json过滤器可以应用于表达式的方式.

我在这方面遇到了很多麻烦,因为似乎定义一个过滤器不足以处理除内联表达式之外的任何内容.不过,我绝对肯定我以前见过它.

是否可以创建一个与指令内联的过滤器?像这样?

<div ng-directive="Model.Target | filterName"></div>

更新

ng-model只是一个例子.我不是在寻找现有的过滤器,我不是在寻找如何应用过滤器,我不是在寻找ng-repeat.我特别想创建一个可以使用指令的新过滤器.

更新2

为了做到这一点,我研究了角度源代码(line 154 of filters.js)并试图在那里模拟代码,但我遇到了奇怪的行为.使用这个代码;

.filter('sample',function () {
    return function (obj) {
        console.log("typoef: ",typeof obj);
    }
});

我试图将它绑定到一个指令;

<div data-ng-custom-directive="Model.Tags | sample"></div>

我收到了错误……

Uncaught TypeError: undefined is not a function

自定义指令实际上并不特别,它只是获取给定的对象,并在将其发送到$scope.Model.Tags对象之前对其进行一些解析.

有人提到你不能在ng-model上加一个过滤器,这对我来说很困惑.它只是ng-model,还是除了ng-repeat之外的任何指令,你不能应用指令?我理解它的方式,根本没有编写的过滤器可以对抗ng-model,虽然我并没有尝试这样做,但这个概念并没有太大的不同.

解决方法

问题不在于过滤器,而是您用于指令变量(属性)的绑定类型.你需要使用’=’.例:

HTML

<div ng-init="test = [1,2,3,4,5]">
    <div dir-a="test | limitTo:3"></div>
</div>

JS

.directive('dirA',function() {
    return {
        scope: {
            dirA: '=' // this is important,'@' would not work
        },link: function($scope,iElm,iAttrs,controller) {
            console.log('$scope.dirA = ',$scope.dirA);
        }
    };
});

打印到控制台“$scope.dirA =”数组[1,3]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读