[英]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.