双向绑定
问题描述:
想有在使用的基本对象是不是工作的一个AngularJS指令2的方式结合,例如:双向绑定
<custom-directive ng-model="variable"></custom-directive>
如何才能实现这一目标?
答
为了在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
答
我才意识到,如果你的指令是不是一个内部的NG-如果它会与原始的绑定工作。也许问题在于你的绑定在ng-if中。尝试使用ng-show代替。也许它会工作。
跑过原始这种方式:
<custom-directive ng-model="parentObj.variable"></custom-directive>
良好做法是要么使用'点rule'(通过定义对象)/'同时限定控制器controllerAs'语法 –