如何使用指令过滤数据?

时间:2015-08-11 03:52:28

标签: angularjs angularjs-directive

我正在尝试使用指令作为我的数据的过滤器。这是我的数据阵列:

$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);
            });
          }

1 个答案:

答案 0 :(得分:0)

首先,您需要修复过滤器。以下是右侧过滤器的示例:

var myRedObjects = $filter('filter')(myObjects, { color: "red" });

您可以在此处阅读有关在指令/控制器中使用过滤器的更多信息:Using Angular Filters inside the controller

其次,您必须使用$scope.choice代替$element.choice