9

I'm building click to edit directives, but have issues understanding how to access parent scope in an isolated directive.

Example: http://jsfiddle.net/ADukg/3591/

scope: {},

It works if I "unisolate" the scope removing scope: {}; but need the isolated scope.

UPDATE:

Done it adding

controller: 'FormCtrl',

To the directive. See http://jsfiddle.net/ADukg/3601/

4

2 回答 2

18

您可以使用$parent隔离范围上的属性来直接访问父范围,但通常您会希望使用属性来指定指令需要哪些父范围属性来完成其工作。

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

于 2013-07-24T19:03:33.093 回答
2

如果您传递原始类型的属性,如“字符串”、“长”......等,给定的解决方案将不起作用。双向绑定仅适用于对象。

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

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

第二种解决方案是不创建隔离范围(但我认为这不是您的目标)。

于 2016-09-08T14:07:00.207 回答