Я пытаюсь обновить модель из директивы, и у меня возникают проблемы, когда $apply или $digest уже выполняются. И у меня есть несколько вопросов:
- Почему
scope[attrs.ngModel]
существует, аngModel.$modelValue
не существует на этапе $apply? - Почему представление не всегда может быть обновлено в фазе $digest (особенно в сложных ситуациях)?
- Является ли фаза $digest локальной $digest() или $root.$digest() (из $apply()) в моем примере?
require: '?ngModel',
link: function(scope, element, attrs, ngModel) {
element.bind('myEvent', function(e) {
//Update model from directive in phase: $apply | $digest
scope[attrs.ngModel].value = scope.$$phase; //Model: '$apply' | '$digest'
//or
ngModel.$modelValue.value = scope.$$phase; //Model: 'none' | '$digest'
//or
ngModel.$modelValue.value = scope.$$phase; //Model: '' | '$digest'
ngModel.$setViewValue(ngModel.$modelValue);
});
}
Демонстрация в реальном времени: http://plnkr.co/edit/gVY6GJejEKCLdTIXNAzK?p=preview