在隔离指令中访问父作用域

时间:2013-07-24 18:15:30

标签: angularjs angularjs-directive angularjs-scope

我正在构建单击以编辑指令,但在了解如何在隔离指令中访问父作用域时遇到问题。

示例:http://jsfiddle.net/ADukg/3591/

scope: {},

如果我“取消隔离”范围删除范围,它就有效:{};但需要孤立的范围。

更新

完成添加

controller: 'FormCtrl',

指令。见http://jsfiddle.net/ADukg/3601/

2 个答案:

答案 0 :(得分:18)

您可以使用隔离范围上的$parent属性来直接访问父作用域,但通常您需要使用属性来指定指令需要执行其工作的父作用域属性。 / p>

如果需要更改指令中的父作用域属性,请使用=(双向对象)进行绑定。如果您只需要指令中父作用域属性的字符串值,请使用@绑定(单向字符串)。

答案 1 :(得分:2)

如果你传递一个原始类型的属性,例如' string',' long'给定的解决方案将不起作用。 ......等 双向绑定仅适用于对象。

每个范围对象都包含一个名为$ parent的特殊属性,该属性引用其父范围。隔离范围还具有$ parent属性。但它指的是封闭控制器/指令的范围。

使其适用于原始属性:您可以将指令模板绑定到控制器。这会将您的指令暴露给它的父级,您可以通过$ parent访问。

第二个解决方案是不制作隔离范围(但我不认为这是你的目标)。