angularjs,为指令创建过滤器
我试图创建一个角度过滤器,它可以影响绑定到指令的数据的方式,类似于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> 我收到了错误……
自定义指令实际上并不特别,它只是获取给定的对象,并在将其发送到$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] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |