2015-11-04 69 views
1

我需要在視圖中初始化一個對象併爲其分配一個引用。模板中的角度ng-init賦值

我可以通過使用ng-init來實現嗎?它是按價值還是參考來分配?

<ANY ng-init="objA = objB"> ... </ANY> 

任何幫助將不勝感激!

回答

1

移動分配給控制器init()方法。

ng-init是指令,有很多的副作用,很難追查它。例如:當您在指令模板中使用ng-init創建/編輯項目,併爲其指定一些model值時 - 實際上應該使用已有值的編輯會遇到問題。

當您添加ng-if時,它的副作用也會執行幾次。

模板中的用法ng-init是您自己的風險。

正確方法:controller數據,應當在模塊的開始被定義 - 在任何情況下任何視圖開始依次爲:$state - >resolve() - >controller - >template - >directive。在沒有現有數據的情況下欺騙自己,這不是一個好主意,除非它是由魔術創造的。

例如,如果中繼器爲空,例如爲空{},並且您需要將其顯示爲可能性以填充空輸入,正如我所提到的那樣 - 您需要在init上運行函數以定義空或通過傳遞擴展現有模型實際模型。

+0

謝謝!無論如何,它很好地知道,如果ng-init按值或引用 – andrey

+1

分配您需要速度 - 使用價值。你意識到副作用 - 使用參考函數。在我的一些情況下,當我用'model'('ng-init =「ctrl.initValue(item)」ng-model =「item」')傳遞的函數實際上是一個鏈接時,我可以自由根據編輯狀態更新它,或者如果處於「新」狀態,則用默認值填充。在'ng-repeat'的情況下,最好將'$ index'傳遞給不創建鏈接對象。 – Appeiron

+1

反正ngInit是一次性函數,直到你添加ngIf爲止 – Appeiron