在angular中设置指针的多个属性的观察者

时间:2017-04-10 14:24:51

标签: javascript angularjs angularjs-directive attributes angularjs-scope

我正在尝试在指令中的多个属性上设置公共监视器。我的代码如下

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

任何人都可以详细解释这个问题,为什么会发生这种情况?

1 个答案:

答案 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 
});