我正在尝试创建 filter
在 Angular 上可以对绑定(bind)到指令的数据的输出方式产生影响,类似于 json
过滤器可以应用于表达式。
不过,我在这方面遇到了很多麻烦,因为似乎定义过滤器不足以处理内联表达式以外的任何事情。不过,我绝对肯定我以前见过它。
问题
有没有可能创建 与指令内联工作的过滤器?像这样?
<div ng-directive="Model.Target | filterName"></div>
更新
ng-model
只是一个例子。我不是在寻找现有的过滤器,我不是在寻找如何应用过滤器,我不是在寻找 ng-repeat
.我特别想创建一个可以使用指令的新过滤器。更新 2
尝试多做一点,我研究了
angular
源代码( line 154 of filters.js) 并试图在那里模拟代码,但我遇到了奇怪的行为。使用此代码;.filter('sample', function () {
return function (obj) {
console.log("typoef: ", typeof obj);
}
});
我试图将它绑定(bind)到一个指令;
<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
编写的过滤器。 ,虽然我并不想完全这样做,但这个概念并没有太大的不同。
最佳答案
问题不在于过滤器,而在于您对指令的变量(属性)使用什么类型的绑定(bind)。您需要使用 '='
.例子:
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 = " Array [ 1, 2, 3 ]
关于angularjs,为指令创建过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25533508/