在没有指令的情况下观察多个元素的属性值?

时间:2015-10-25 20:08:32

标签: angularjs

鉴于以下内容:

<div ng-app="interactive">  
    <main ng-controller="RecipesController">
        <ul>
            <li ng-repeat="option in options">
                <ul decisionIndex="{{ value }}">
                    <li>Edit {{ option.name }}</li>
                    <li>Choose {{ option.name }}</li>
                    <li>Delete {{ option.name }}</li>
                </ul>
            </li>
        </ul>
    </main>
</div>

如何使用$watch检测“值”(0,1或2)是否发生变化?

我需要使用$watchGroup吗?据我所知,只有你有多个不相同的属性才有效。

我发现this使用指令隔离范围,但它与我的情况不太匹配,我希望使用指令。
是否可以使用没有指令的隔离范围?或者我如何观察多次出现的属性值的变化?

修改
这就是我尝试使用$watch

的方法
app.controller('RecipesController', ['$scope', function ($scope) {
    $scope.$watch('value', function () {
        console.log('value: ' + $scope.value);
    });
}]);

1 个答案:

答案 0 :(得分:0)

<div ng-app="myApp" ng-controller="myCtrl">
    <input type="text" ng-model="value">
    <p>Current value is: {{value}}</p>
    <ul>
        <li ng-repeat="option in options">
            <ul decisionIndex="{{value}}">
                <li ng-click="setValue(0)">Edit {{option.name}}</li>
                <li ng-click="setValue(1)">Choose {{option.name}}</li>
                <li ng-click="setValue(2)">Delete {{option.name}}</li>
            </ul>
        </li>
    </ul>
</div>

控制器:

angular.module('myApp', [])
  .controller('myCtrl', ['$scope', function($scope) {
    $scope.value = 0; //Set initial value, or just declare it;
    $scope.options = [
        {name: "Bob"},
    ];
    $scope.setValue = function(a){
        $scope.value = a;
    }
    $scope.$watch('value', function(newVal, oldVal){
        console.log(newVal);
    })
  }]);