我不清楚scope.ngModel
和controller.$viewValue
/controller.$modelValue
/controller.$setViewValue()
之間的關係是什麼,具體而言,後三者的觀點是什麼。例如,參見this jsfiddle:
<input type="text" ng-model="foo" my-directive>
和:
myApp.directive('myDirective', function($timeout) {
return {
require: 'ngModel',
restrict: 'A',
scope: { ngModel: '=' },
link: function (scope, element, attrs, controller) {
function log() {
console.log(scope.ngModel);
console.log(controller.$viewValue);
console.log(controller.$modelValue);
}
log();
controller.$setViewValue("boorb");
log();
scope.$watch('ngModel', function (val) {
console.log("val is now", val);
});
$timeout(function() {
log();
}, 2000);
}
}
});
隨着所述控制器:
function MyCtrl($scope, $timeout) {
$scope.foo = 'ahha';
$timeout(function() {
$scope.foo = "good";
}, 1000);
}
的輸出是:
(index):45 ahha
(index):46 NaN
(index):47 NaN
(index):45 ahha
(index):46 boorb
(index):47 boorb
(index):53 val is now ahha
(index):53 val is now good
(index):45 good
(index):46 boorb
(index):47 boorb
controller.$viewValue
做不是S作爲foo
變量的值出發。此外,controller.$setViewValue("boorb")
完全不影響scope.ngModel
,更新也不反映在HTML中。因此,似乎scope.ngModel
和controller.$viewValue
之間沒有關係。看來,我想要做的任何事情,我只會使用scope.ngModel
,並觀看這些值。什麼是使用controller.$viewValue
和controller.$modelValue
或保持與scope.ngModel
最新?
有幫助的:http://radify.io/blog/understanding-ngmodelcontroller-by-example-part-1/ – Claudiu