我嘗試創建通用指令來過濾角度中的數組。如果濾波器在角度指令中,如何過濾數組?
<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
是的,這看起來很奇怪,因爲我比必要時簡化了它。我使用鏈接,因爲有時我需要創建'