服务变量更改时范围值不更新
Scope value not updating when service variable changes
我有一个组件(parms-bar.component.js),当我点击按钮(box.component.js)时应该会更新,但它没有发生。我试图让他们使用服务(main.service.js)中的"选定"变量进行通信。当您启动应用程序时,"测试节点"由我的"parms-bar"组件显示。在按钮单击上,它应该更改为"Box",但事实并非如此。
在这里你可以看到一个活生生的例子
我还阅读了这个问题的答案,它说每次我为我的selected
分配一个新值时,我可能会替换与我的关联的内存位置,而范围则指向旧位置。但是,即使尝试只修改其name
属性,而不是分配一个新对象,我也没有感到高兴。
您遇到了对象引用问题。解决此问题的最简单方法是更改服务以返回二传手和getter。
主服务.js
angular.module('app').service('mainService', function(){
var selected = {name: "test node"};
var service = {
get selected(){
return selected;
},
set selected(value){
selected = value;
}
}
return service;
});
现在,您可以更改其他模块以直接获取和设置此对象。
box.component.js
angular.module('box').component('box', {
templateUrl: 'box.template.html',
controller: function boxController(mainService){
this.addBox = function () {
var box = mainService.selected;
//Set custom properties
box.name = "Box";
//Set as selected
//mainService.selected = box; <-- This is not needed
}
}
});
parms-bar.component.js
angular.module('parms-bar').component('parmsbar', {
templateUrl: 'parms-bar.template.html',
controller: function parmsController(mainService){
this.selected = mainService.selected;
}
});
然后在 parms-bar.template 中使用该对象.html
<div id="parms-bar">
<a>
{{$ctrl.selected.name}}
</a>
</div>
相关文章:
- ngDialog-弹出窗口未更新范围变量
- 无法使用编程加载的属性更新范围滑块.js
- 角度文件上传更新范围在完成项上
- AngularJS摘要周期偶尔无法更新范围
- Angular:从工厂更新范围不起作用
- NG模型对我来说是矫枉过正的.任何仅在单击按钮时更新范围的替代方案,而不是每次都更新范围
- Angularjs 可编辑的字体头不更新范围
- 通过选中复选框更新范围
- 如何更新范围值
- 事件的角度更新范围
- 角度不更新范围更改时的模板
- 更新范围时不调用 Angular 指令
- AngularJS更新范围$q
- 如何动态更新范围滑块
- 尝试使用Firebase facebookconnect和AngularJS更新范围变量时出现问题
- Angular ng src在更改图像源时不更新范围
- 在$index达到某个数字后更新a范围值
- Angular-当Factory数据发生更改时更新范围
- 在视图中使用compile in指令和ng repeat的组合会阻止正确更新范围元素列表
- AngularJS,在指令的传入内容内分配与更新范围时的不一致's的孤立范围