我正在尝试使用指令作为我的数据的过滤器。这是我的数据阵列:
$scope.data = [{
"id": 1,
"name": "een"
}, {
"id": 2,
"name": "twee"
}];
这是我的指令过滤器,实现为选择:
.directive('myFilter', function() {
return {
restrict: 'E',
templateUrl: 'my-dialog.html',
link: function($scope, $element, $attributes) {
var testing = $scope.data | {
filter: $element.choice
};
console.log($element.choice);
console.log($attributes.choice);
console.log($scope.choice);
console.log(testing);
}
};
});
和templateUrl:
<select name="" id="" ng-model='choice'>
<option value=1>1</option>
<option value=2>2</option>
</select>
这是定义指令的html:
<my-filter dt="data"></my-filter>
plunkr:http://plnkr.co/edit/zqS5HyH3AqaMVtEv107p?p=preview
如何更改指令,以便当我在组合中选择1时,数据被过滤为仅1记录id = 1的那个?
更新:当我更改组合的值时,我已经稍微更改了代码,尝试过滤$ scope.data:
link: function($scope) {
$scope.$watch('choice', function() {
var testing = $filter('filter')($scope.data,$scope.choice);
console.log(testing);
});
}
答案 0 :(得分:0)
首先,您需要修复过滤器。以下是右侧过滤器的示例:
var myRedObjects = $filter('filter')(myObjects, { color: "red" });
您可以在此处阅读有关在指令/控制器中使用过滤器的更多信息:Using Angular Filters inside the controller
其次,您必须使用$scope.choice
代替$element.choice