angularjs - angularjs指令中原始变量的两种方式绑定(bind)

标签 angularjs angularjs-directive

尝试在使用原始对象时对 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/

相关文章:

javascript - 如何连接样式

javascript - 使用 AngularJS 从 Unsplash 预加载随机图像

javascript - 与自定义指令一起使用时,ng-select 选项会加倍

javascript - 如何以 Angular 将对象从具有隔离范围的嵌套指令传递到父 Controller 范围

javascript - 递归 ng-repeat x 次

javascript - angularjs $state 和 $rootScope.$on($stateChangeStart) 问题

AngularJS:如何使用多个实例定位特定指令

javascript - 具有编译功能和 ng-show 的 Angular 对话框指令不起作用

javascript - Angularjs 指令 - 无法从隔离范围中检索值

angularjs - Angularjs 中进行 "right"指令间通信的 "master-detail"方式是什么