簡體   English   中英

如果使用$ watch更改數據,則Angujar 1.3無法執行

[英]Angujar 1.3 can't if data change with $watch

我正在使用Angular.js制作網頁,在其中將數據顯示在表中,用戶可以編輯。 每當數據更改時,我都需要運行一個javascript函數,因此我的想法是使用$scope$ watch 我的問題是,數據更改了,但是$scope$ watch沒有運行。

這是我的代碼(app.js)的精簡版

app.controller('DataCtrl', function($scope, ngTableParams) {
  $scope.datos = [{x:1, y:2},
                {x:3, y:5},
                {x:2, y:8}];

  $scope.tableParams = new ngTableParams({
    page: 1,    // show first page
    count: 20,   // count per page
    }, {
      total: $scope.datos.length, // length of data
      getData: function($defer, params) {
              $defer.resolve($scope.datos);
      }
  });
  // add new line
  this.addLine = function() {
    $scope.datos.push({
      x: null,
      y: null,
    });
  };
  //delete data
  this.deleteLine = function(index){
    $scope.datos.splice(index, 1);
  };

  $scope.updated = -1;
  $scope.$watch('datos', function(){
        $scope.updated++;
    });

});

我做錯了什么? 從最好的角度看這是數據變化嗎? 戰車

使用對象相等標志,因此它不使用引用相等:

  $scope.$watch('datos', function(){
      $scope.updated++;
  }, true);

或者,按照氘的建議使用$watchCollection

  $scope.$watchCollection('datos', function(){
      $scope.updated++;
  });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM