Plunker:http://plnkr.co/edit/HhkypG8I3t7BNv7EPl8q?p=preview
我有许多Filter对象存在于FilterArray中。模板绑定到过滤器内部的状态。 FilterArray的工作是使用state()函数确定所有过滤器的总状态。
angular.module('app', [])
// A filter
.factory('Filter', function() {
return function(state) {
return {
state: state
};
};
})
// An array of filters with a state() function
.factory('FilterArray', function(Filter) {
return function(filters) {
return {
filters: filters,
state: function() {
return this.filters.map(function(filter) {
return filter.state;
});
}
};
}
})
.controller('FilterCtrl', function($scope, Filter, FilterArray) {
$scope.filterArray = new FilterArray([
new Filter(true),
new Filter(false)
]);
$scope.$watch('filterArray.state()', function(data) {
console.log(data);
});
})
;
现在,当我尝试$ watch()这个函数时,会出现一个无限的$ digest循环(参见Plunker)。我的想法是,当FilterArray的状态发生变化时,我想广播一个事件。
有关为何发生这种情况的建议以及构建它的正确方法吗?
谢谢!