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