2016-06-28 176 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>