我正在尝试在指令中的多个属性上设置公共监视器。我的代码如下
.directive('myDirective', function () {
return {
restrict: 'A',
scope: true,
link: function ($scope, element, attrs) {
$scope.$watch(function () {
return [attrs.attrOne];
}, function (newVal) {
console.log(newVal);
}, true);
})
但是这不起作用,我已经将对象相等的第三个参数设置为true。但是,如果我尝试在单个属性上设置观察器,它可以正常工作,代码如下所示
.directive('myDirective', function () {
return {
restrict: 'A',
scope: true,
link: function ($scope, element, attrs) {
$scope.$watch(attrs.attrOne,
function (newVal) {
console.log(newVal);
});
});
任何人都可以详细解释这个问题,为什么会发生这种情况?
答案 0 :(得分:0)
从AngularJS 1.3开始,有一个名为$ watchGroup的新方法,用于观察一组表达式。
$scope.foo = 'foo';
$scope.bar = 'bar';
$scope.$watchGroup(['foo', 'bar'], function(newValues, oldValues, scope) {
// newValues array contains the current values of the watch expressions
// with the indexes matching those of the watchExpression array
// i.e.
// newValues[0] -> $scope.foo
// and
// newValues[1] -> $scope.bar
});