Скажем, у меня есть следующая директива:
myApp.directive('myDirective', function() {
return {
restrict: 'A',
require: 'ngModel',
scope: {
ngModel: '='
},
link: function(scope, elem, attrs, ngModelCtrl) {
scope.$watch('ngModel', function() {
ngModelCtrl.$modelValue = 'foo';
});
}
}
});
И следующий html:
<input ng-model="name" my-directive></input>
По сути, всякий раз, когда пользователь изменяет ввод, my-directive
в идеале меняет значение внутренней модели на «foo», оставляя значение представления нетронутым.
Но когда я распечатываю $scope.name
в соответствующем контроллере, он не регистрирует «foo», он регистрирует все, что ввел пользователь.
Казалось бы, ngModelCtrl.$modelValue
- это не то, к чему обращается контроллер - я неправильно подхожу к этой проблеме?
(Кроме того, наблюдение за ngModel
в прицеле кажется действительно неправильным, но я не уверен, что есть другой способ. Любые предложения будут высоко оценены!)
$viewChangeListeners
, который специально разработан для этой цели. Но почему вы хотите установить$modelValue
иначе, чем viewValue? - person PSL   schedule 03.10.2014type="tel"
и предоставить маску$viewValue
, сохраняя при этом$modelValue
как целое число. - person Cody   schedule 23.03.2016