Javascript 从AngularJS中的$apply或$digest cycle指令更新模型
我尝试从指令更新模型,但在$apply或$digest已在进行时遇到一些问题。我有一些问题:Javascript 从AngularJS中的$apply或$digest cycle指令更新模型,javascript,angularjs,angularjs-directive,angularjs-scope,Javascript,Angularjs,Angularjs Directive,Angularjs Scope,我尝试从指令更新模型,但在$apply或$digest已在进行时遇到一些问题。我有一些问题: 为什么scope[attrs.ngModel]存在,而ngModel.$modelValue不存在 是否存在于$apply阶段 为什么视图不能总是在$digest阶段更新(特别是在困难的情况下) 在我的示例中,$digest阶段是本地$digest()还是$root.$digest()(来自$apply()) require:“?ngModel”, 链接:功能(范围、元素、属性、模型){ 元素绑定('m
scope[attrs.ngModel]
存在,而ngModel.$modelValue
不存在
是否存在于$apply阶段require:“?ngModel”,
链接:功能(范围、元素、属性、模型){
元素绑定('myEvent',函数(e){
//分阶段从指令更新模型:$apply |$digest
范围[attrs.ngModel].value=scope.$$phase;//模型:“$apply”|“$digest”
//或
ngModel.$modelValue.value=scope.$$phase;//模型:“无”|“$digest”
//或
ngModel.$modelValue.value=scope.$$phase;//模型:''|'$digest'
ngModel.$setViewValue(ngModel.$modelValue);
});
}
现场演示:
如何创建和提供自定义模型适配器?或者请建议合适的物品。如果angular假设所有更改都已完成,如何在$digest阶段更改模型?现在我使用scope.$$phase | | scope.$apply,但我认为这是一种不好的方式……我确信您的代码示例和问题并没有反映您真正的问题。您在代码中所做的是。。。几乎是错误的,不管怎样,你想做什么,我很抱歉地说,真的:-)如果你想让你的代码“保持原样”,你唯一的选择就是检查当前阶段,如果它不是“$apply”:将你的值设置器包装在范围内。$apply(function(){scope[attrs.ngModel].value=“whatever you want”})重新应用一个新值。但正如我所说的,您应该重新思考您的示例代码,以显示您真正想要的。