我尝试创建用于以角度过滤数组的通用指令。
<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