如果数据随$watch而更改,Angujar 1.3 则无法

Angujar 1.3 can't if data change with $watch

本文关键字:Angujar 数据 watch 如果      更新时间:2023-09-26

我正在用Angular做一个网页.js其中我在表格中显示数据,用户可以编辑。 每当数据发生变化时,我都需要运行一个javascript函数,所以我的想法是使用$scope$ watch。我的问题是,数据更改$scope$ watch但无法运行。

这是我的代码(应用程序.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++;
  });