javascript - AngularJS 值更改在指令中不可见

标签 javascript angularjs directive prelink

我想延迟编译子指令,直到父指令的预链接中的 promise 得到解决并且值(CONFIG)将被覆盖。

家长的预链接中:

    somePromise.then(function(){ 
       CONFIG = 1;
       elem.append($compile(template)(scope));
    }

模板包含Child指令,因此Child的预链接在promise解析后执行。 现在我想访问 Child's 预链接中的 CONFIG,它具有旧值 ({})。

为什么会发生这种情况? fiddle :http://jsfiddle.net/RmDuw/642/

最佳答案

当您在指令中执行 CONFIG = 1 时,您实际上是在更改局部变量的值,该变量恰好是 Angular 值服务注入(inject)的变量。

由于您要更改的是局部变量,因此在子指令中注入(inject)的内容不会更改。

为了通过值服务向子指令发送值,您必须执行类似 CONFIG.value = 1 的操作。

这是有效的,因为尽管它们是局部变量(每个指令一个),但它们是对同一服务的引用,因此指向对象的更改对两个引用都是可见的。

关于javascript - AngularJS 值更改在指令中不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34590154/

相关文章:

javascript - 为 Typescript 中的 Angular Directive(指令)错误键入服务对象

angularjs - 在 AJAX 调用填充数据之前调用 Angular 指令

angularjs - ng-grid 在 IE8 中不起作用

javascript - 提交表单时 Angular 事件成功打开弹​​出窗口

javascript - Stripe 结帐自定义按钮不充电

javascript - 将 XML 文件解析为表

angularjs - 如何在 Controller 之外声明 Angular UI Modal?

javascript - 如何每 x 秒刷新一次 angularjs 指令?

javascript - 使用 css 将 div 移动到新位置然后停在那里

javascript - 如何使用 django 表单和模板更新图像输入