我尝试从指令更新模型,并且在 $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);
});
}