顯示的數據我創建了一個簡單的指令:AngularJS更新的指令
var app = angular.module('plunker', []);
function Data(n) {
this.n = n;
}
app.controller('MainCtrl', function($scope) {
$scope.data = [
new Data(1),
new Data(2),
new Data(3)
];
$scope.addNew = function() {
for (var i = 0; i < $scope.data.length; i += 1) {
$scope.data[i].n *= 10;
}
$scope.data.push(new Data(1));
}
});
app.directive('data', function() {
return {
require: 'ngModel',
template: '<div><span>n using scope: {{n}}</span><br><span>n using model: {{model.n}}</span></div>',
restrict: 'E',
link: postLink,
scope: {},
};
function postLink(scope, element, attrs, ngModelController) {
ngModelController.$render = function() {
var $viewValue = ngModelController.$viewValue;
scope.n = $viewValue.n;
scope.model = $viewValue;
};
}
});
Plunker鏈接here。
調用addNew()
幾次後,我得到的輸出:
n using scope: 1
n using model: 1000
n using scope: 2
n using model: 2000
n using scope: 3
n using model: 3000
n using scope: 1
n using model: 100
n using scope: 1
n using model: 10
n using scope: 1
n using model: 1
我明白爲什麼不更新scope.n
值(因爲它是在ngModelController文件明確提出,但我不知道爲什麼scope.model
值更新
我注意到在對象上hashkey過,我只是努力用語言來表達我所看到的。好答案。 –
有關$$ hashkey的文檔中沒有。實際上,SO真的是我發現它的唯一深入信息的唯一地方。 – tpie