Angular 嵌入内容中的范围修改

Angular scope modification inside transcluded content

Angular:谁能解释为什么指令中的嵌入内容只能更新作用域上的对象——而不是直接更新作用域上的变量。仅仅是因为对象和函数在 javascript 中是 ref 类型吗?为什么绑定以一种方式工作以及...为什么绑定会在嵌入内容中更新后中断(参见 plunker 示例)

-Plunker sample - variable on scope vs object on scope

工作-Plunker sample - variable on scope

嵌入的内容也可以更新父级的范围属性

嵌入的内容与任何其他内容一样,因此如果您遵循 dot.rule,您将能够更新所需的父级范围属性。始终遵循 dot.rule 并重构您的逻辑以确保一切都在 angular way.

中完成

指令作用域类型

angular 2.0 版本之前的指令接受多种类型的范围,范围可以是 true,它创建一个新的并继承父级的属性; false,不创建新作用域,但仍继承父级的属性;或 {} 这被称为隔离范围,这将创建一个具有零属性的新范围,它只保留您声明的属性。

单向与双向数据绑定

Angular 同时使用单向和双向数据绑定。例如,当您使用 ng-model 指令时会发生双向数据绑定,每当您更新模型时,视图都会反映这些更改,反之亦然。另一方面,当您使用插值 {{some.property}}

时,会发生单向数据绑定

如果您使用 dot.rule,双向数据绑定应该不会中断。毕竟原型继承就是这样工作的。

查看此 Pen 以说明此答案中所说的所有内容。