Angular:有人能解释为什么指令中的transcluded内容只能更新作用域上的对象,而不能直接更新作用域中的变量吗。只是因为对象和函数是javascript中的ref类型吗?为什么绑定是单向工作的。。。为什么在transcluded内容内部更新后绑定中断(参见plunker示例)
-
Plunker样本-作用域上的变量与作用域上的对象
工作-
Plunker样本-作用域上的变量
转码内容还可以更新父级的作用域属性
转码内容与任何其他内容一样,因此,如果遵循dot.rule
,则可以更新所需的父作用域属性。始终遵循dot.rule
并重构您的逻辑,以确保在angular way
中完成所有工作。
指令范围类型
angular 2.0版本之前的指令接受几种类型的作用域,作用域可以是true
,它创建了一个新的作用域并继承了父级的属性;false
,它不创建新的作用域,但仍然继承父级的属性;或者{}
,它被称为一个隔离的作用域,这会创建一个没有属性的新作用域,它只保留您声明的属性。
单向与双向数据绑定
Angular同时使用单向和双向数据绑定。例如,双向数据绑定发生在使用ng-model
指令时,无论何时更新模型,视图都会反映这些更改,反之亦然。另一方面,当您使用插值{{some.property}}
时,会发生单向数据绑定
如果您正在使用dot.rule
,则双向数据绑定不应中断。这就是原型继承的工作原理。
看看这支笔来说明这个答案中所说的一切。