2013-07-24 54 views
9

我在構建單擊來編輯指令,但是在理解如何在獨立的指令中訪問父範圍時遇到問題。在孤立的指令中訪問父範圍

實施例:http://jsfiddle.net/ADukg/3591/

scope: {}, 

它的工作原理,如果我 「unisolate」 的範圍中除去範圍:{};但需要隔離的範圍。

UPDATE:

幹過加入

controller: 'FormCtrl', 

該指令。請參閱http://jsfiddle.net/ADukg/3601/

+0

可能的重複[如何在自定義指令\ *中使用自定義範圍*在AngularJS中訪問父範圍內的內容](http://stackoverflow.com/questions/17900201/how-to-access-parent-scope - 從 - 中之自定義指令與 - 自有範圍,在安) – thorn

回答

18

您可以使用隔離範圍上的$parent屬性來直接訪問父範圍,但通常需要使用屬性來指定指令需要執行其工作的父範圍屬性。

如果您需要更改指令中的父範圍屬性,請使用=(雙向對象)進行綁定。如果您只需要指令中父範圍屬性的字符串值,請使用@(單向字符串)進行綁定。

2

如果您傳遞一個屬性,如'string','long'等原始類型,則給定的解決方案將不起作用。etc 雙向賓果只適用於對象。

每個範圍對象都包含一個名爲$ parent的特殊屬性,它指向其父範圍。隔離的作用域還有一個$ parent屬性。但它指的是封閉的控制器/指令的範圍。

爲了使它與原始屬性一起工作:您可以將您的指令模板綁定到控制器。這會將你的指令公開給它的父代,你可以通過$ parent訪問。

第二種解決方案是不做隔離作用域(但我認爲這不是你的目標)。

相關問題