2016-06-28 139 views
1

想有在使用的基本對象是不是工作的一個AngularJS指令2的方式結合,例如:雙向綁定

<custom-directive ng-model="variable"></custom-directive> 

如何才能實現這一目標?

+1

良好做法是要麼使用'點rule'(通過定義對象)/'同時限定控制器controllerAs'語法 –

回答

2

爲了在javascript中有2種綁定方式(不僅僅是angularjs),我們必須傳遞一個對象(這是由javascript的評估策略引起的 - 可以在這裏閱讀更多關於它的內容https://en.wikipedia.org/wiki/Evaluation_strategy#Call_by_sharing)。基本上發生的事情是,當我們傳遞一個基本變量時,它通過值傳遞並重新創建,而不是通過引用傳遞。只有對象通過引用傳遞。

所以這個問題可以通過將變量的父對象,例如解決:

<custom-directive ng-model-name="variable" ng-model-parent="parentObj"></custom-directive> 

,然後修改對象的指令如下:

parentObj[variable] = "whatever"; 

這樣,我們將保持變量與parentObj之間的連接。

另一種辦法是通過該模型與父OBJ,例如:

<custom-directive ng-model="parentObj.variable"></custom-directive> 

點就是這個例子中的一個重要組成部分。其實際上最好的做法是通過angular來始終使用parentObj-dot-property傳遞變量。

更多的信息,實際上angularjs有一個關於它的文檔https://github.com/angular/angular.js/wiki/Understanding-Scopes

-1

我才意識到,如果你的指令是不是一個內部的NG-如果它會與原始的綁定工作。也許問題在於你的綁定在ng-if中。嘗試使用ng-show代替。也許它會工作。

跑過原始這種方式:

<custom-directive ng-model="parentObj.variable"></custom-directive>