我遇到了嵌套控件与它所绑定的变量断开连接的问题。
我已经在角度来源的ngModelController
中跟踪了这些行:
堆栈跟踪在$$writeModelToScope
期间进入并调用setter函数(在解析器帮助程序模块中):
key = ensureSafeMemberName(element.shift(), fullExp);
ensureSafeObject(obj[key], fullExp);
obj[key] = setValue;
return setValue;
当时的范围是子指令,需要父模型控制器。我可以看到范围继承了父范围,我的属性存在。
key
是我的属性名称,当在调试器中计算表达式obj[key]
时,它会显示修改前的值,这是正确的。
只要计算表达式obj[key] = setValue
,就会在子作用域上创建一个属性,该属性会隐藏父属性,从而断开绑定。
我的问题是,为什么这个表达式没有在父对象上设置值而不是在子对象上创建新属性?
从我读过的内容来看,这是设计,写入总是写入目标对象,这是正确的吗?如果是这样,我能想到解决这个问题的唯一方法是观察子范围的属性更改并将值推送到父范围...