angularjs custom命令管理带有复选框列表的过滤器链,需要ng-change

时间:2016-02-15 10:19:30

标签: angularjs checkbox angularjs-directive angularjs-ng-change

我写了一个基于复选框列表管理一些过滤器链的指令,该指令将对象列表作为输入,根据键(其他输入)显示列表(作为复选框列表),作为输出我需要有所选项目的列表)。 这是我的指令代码

directive('filterPanel', function() {
  return {
    require: 'ngModel',
    trasclude: true,
    scope: {
     availableFilters: "=filterlist",
     ngModel: "=",
     filterField: '=filterfield',
     title: '@title',
     panelclass: "@panelclass",
     previousSelection: "=previousselectionlist",
     selectOne: "=selectone"
   },
   templateUrl: 'panel-filter.tpl.html',
   controller: function($scope) {
      if (angular.isUndefined($scope.filterField)) {
        $scope.filterField = 'area';
      }
      $scope.clearSelection = function() {
        $scope.ngModel.splice(0, $scope.ngModel.length);
     };
     $scope.toggleSelection = function(filterOption) {
        var idx = $scope.ngModel.indexOf(filterOption);
         if (idx > -1) {
          $scope.ngModel.splice(idx, 1);
         } else {
           if ($scope.selectOne) {
             $scope.ngModel.splice(0, $scope.ngModel.length);
             $scope.ngModel.push(filterOption);
           } else {
             $scope.ngModel.push(filterOption);
           }
        }
     }
   }
 }
});

我知道如果availableFilters列表(从外部传递)更改,则存在问题,更改将不会传播到结果列表(我正在考虑在availableFilters列表上添加一个监视来处理它。

但真正的问题是我想在指令上使用ng-change来了解用户是否选择了某些内容,但我不清楚如何做到这一点。

我读了这个post并看了那个傻瓜,但我仍然不明白如何在我的指令中触发ng-change。

这是一个有效的plunker

0 个答案:

没有答案