AngularJS 值更改在指令中不可见
AngularJS value change not visible in directives
我想延迟编译 child 指令,直到 parent 指令的预链接中的承诺将被解析并且值 (CONFIG) 将被覆盖。
在Parent的前链接中:
somePromise.then(function(){
CONFIG = 1;
elem.append($compile(template)(scope));
}
模板包含 Child 指令,因此 Child 的预链接在 promise 的 resolve 之后执行。
现在我想访问 Child 的 预链接中的 CONFIG,它具有旧值 ({})。
为什么会这样?
Fiddle: http://jsfiddle.net/RmDuw/642/
当您在指令中执行 CONFIG = 1
时,您实际上是在更改局部变量的值,该变量恰好是由 Angular 值服务注入的值。
由于您正在更改的是局部变量,因此在子指令中注入的内容未更改。
为了通过值服务将值发送到子指令,您必须执行类似 CONFIG.value = 1
.
的操作
这是可行的,因为尽管是局部变量(每个指令一个),但它们是对同一服务的 引用 ,因此指向对象的更改对两个引用都是可见的。
我想延迟编译 child 指令,直到 parent 指令的预链接中的承诺将被解析并且值 (CONFIG) 将被覆盖。
在Parent的前链接中:
somePromise.then(function(){
CONFIG = 1;
elem.append($compile(template)(scope));
}
模板包含 Child 指令,因此 Child 的预链接在 promise 的 resolve 之后执行。 现在我想访问 Child 的 预链接中的 CONFIG,它具有旧值 ({})。
为什么会这样? Fiddle: http://jsfiddle.net/RmDuw/642/
当您在指令中执行 CONFIG = 1
时,您实际上是在更改局部变量的值,该变量恰好是由 Angular 值服务注入的值。
由于您正在更改的是局部变量,因此在子指令中注入的内容未更改。
为了通过值服务将值发送到子指令,您必须执行类似 CONFIG.value = 1
.
这是可行的,因为尽管是局部变量(每个指令一个),但它们是对同一服务的 引用 ,因此指向对象的更改对两个引用都是可见的。