我正在尝试以角度创建filter
,这可能会影响绑定到指令的数据的方式,类似于json
过滤器可以应用于表达式的方式。
我遇到了很多麻烦,因为似乎定义一个过滤器不足以处理除内联表达式之外的任何内容。不过,我绝对肯定我以前见过它。
是否可以创建与指令内联的过滤器?喜欢这个?
<div ng-directive="Model.Target | filterName"></div>
ng-model
只是一个例子。我没有找到现有的过滤器,我不是在寻找如何应用过滤器,我不是在寻找ng-repeat
。我特别想要创建一个可以使用指令的 new 过滤器。
尝试更多这样做,我研究了angular
源代码(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>
我收到了错误......
未捕获的TypeError:undefined不是函数
自定义指令并不是什么特别的东西,它只是获取给定的对象,并在将其发送到$scope.Model.Tags
对象之前对其进行一些解析。
有人提到您不能在ng-model
上添加过滤器,这对我来说很困惑。它只是ng-model
,还是指法其他而不是ng-repeat
你不能应用指令?我理解它的方式,根本没有针对ng-model
的编写的 过滤器,虽然我并没有尝试这样做,但这个概念并没有太大不同。
答案 0 :(得分:3)
问题不在于过滤器,而是您用于指令变量(属性)的绑定类型。您需要使用'='
。例如:
<强> 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 ]