尝试在使用原始对象时对 AngularJS 指令进行 2 路绑定(bind)是行不通的,例如:
<custom-directive ng-model="variable"></custom-directive>
如何做到这一点?
最佳答案
为了在 javascript 中进行 2 路绑定(bind)(不仅仅是 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
关于angularjs - angularjs指令中原始变量的两种方式绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38078884/