我尝试创建通用指令来过滤角度中的数组。如果滤波器在角度指令中,如何过滤数组?
<body ng-controller="MainCtrl">
controller: <input type="text" ng-model="query.name" /> - work<br>
directive: <span filter by="name"></span> - not work
<ul>
<li ng-repeat="item in list | filter:query">{{item.name}}</li>
</ul>
</body>
控制器和指令是:在控制器的作品,但过滤器
app.controller('MainCtrl', function($scope) {
$scope.list = [
{id: 1, name:'aaa'},
{id: 2, name:'bbb'},
{id: 3, name:'ccc'}
];
});
app.directive('filter', function() {
return {
scope: {
by: '@'
},
link: function postLink(scope, element, attrs) {
element.append(
'<input type="text" ng-model="query.' + attrs.by + '">');
}
}
});
过滤器在指令不。我不知道如何解决它。
解决方案是固定在plunker:http://plnkr.co/edit/WLGd6RPQEwMFRBvWslpt?p=preview
这是一个非常奇怪的过滤方法。即使你可以通过'link'动态添加元素,'query.name'将永远不会在你的指令内解析,因为你已经隔离了你的作用域(你必须使用'$ parent.query.name' ,这不是一个好主意)。 – Langdon 2013-04-29 17:00:05
是的,这看起来很奇怪,因为我比必要时简化了它。我使用链接,因为有时我需要创建'