2015-10-25 33 views
0

給定以下:觀察無指令的多個元素的屬性值?

<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); 
    }); 
}]); 
+0

凡定義這個價值?爲什麼不使用'$ watch'? –

+0

該值被設置在我的控制範圍之外。如果我嘗試使用'$ watch',它只在使用一個選項時才起作用。例如,我不能有多個選項可供選擇。 –

+0

我們需要看到更多的代碼。價值是一個物體嗎?數組? etc –

回答

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); 
    }) 
    }]); 
+0

哇,現在它的工作。希望這是一個錯字。謝謝,它現在可行! –