我尝试从指令更新模型,并且当$ 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);
});
}
答案 0 :(得分:2)
多数民众赞成因为角度不知道如何将模型映射到您的DIV元素。 angular有几乎所有INPUT(除了INPUT类型文件),SELECT和TEXTAREA元素的内置模型实现。 在您的情况下(具有应用的ng模型的DIV),没有已知角度的匹配模型适配器。 DIV元素的属性/属性应采用角度与模型同步?这就是为什么你没有应用$ modelValue。 您需要做的是为角度提供自定义模型适配器,或者您需要使用INPUT,SELECT或TEXTAREA元素。
因为在$ digest阶段,angular假设所有更改都已完成。
没有本地或全球$ digest阶段。阶段始终与您的ng-app相关联。