我的角度自定义指令有点麻烦。我想在我的过滤器中访问"类型" -variable,这是filterung对象(在第一级,所以应该可以没有自定义过滤器)。
这是(迄今为止非常基本的)结构:
angular.module('....').directive('ngTest', function () {
return {
restrict: 'AE',
replace: 'true',
scope: {
list: '=',
type: '@'
},
template: '<div><ul><li ng-repeat="information in list | filter:{ttype:type}">....</li></ul></div>'
}
});
有没有办法访问模板字符串中的变量?逃避或使用模板html文件都不适合我..
谢谢, 克里斯
答案 0 :(得分:1)
使用链接函数从范围变量构造过滤器。
稍微不那么尴尬,它将为您提供更大的灵活性,以便在将来更改过滤器。
angular.module('....').directive('ngTest', function () {
return {
restrict: 'AE',
replace: 'true',
scope: {
list: '=',
type: '@'
},
template: '<div><ul><li ng-repeat="information in list | filter:filterOb">....</li></ul></div>',
link: function(scope, element, attrs) {
scope.filterOb = { ttype: scope.type }
}
}
});
这是一个有效的plunk,你可以将整个过滤器对象传递给指令,而不仅仅是一个字符串 - 这样你可以在不改变指令的情况下过滤你想要的任何东西
答案 1 :(得分:0)
重命名变量并重写指令后,它突然起作用:
<li ng-repeat="information in list | filter:{ttype:type}">{{information.value}}</li>
有时它只是......尴尬。 不过:谢谢!