我尝试从指令更新模型并且在 $apply 或 $digest 已经在进行中时遇到了一些麻烦。我有一些问题:
scope[attrs.ngModel]
存在,但 ngModel.$modelValue
不存在存在于 $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
最佳答案
在您的情况下(具有应用的 ng-model 的 DIV)没有已知的 angular 匹配模型适配器。 DIV 元素的什么属性/属性应该采用 Angular 与您的模型同步?这就是为什么你没有应用 $modelValue 的原因。
您需要做的是为 angular 提供自定义模型适配器,或者您需要使用 INPUT、SELECT 或 TEXTAREA 元素。
关于javascript - 从 AngularJS 中的 $apply 或 $digest 循环中的指令更新模型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18036015/