我有一個按鈕,box.component.js:範圍值接收更新
angular.module('box').component('box', {
templateUrl: 'box.template.html',
controller: function boxController(mainService, UiService){
this.addBox = function() {
//Set box as selected
var box = mainService.selected;
var nodesHolder = UiService.getNodesHolder().children;
//Set custom properties
box.name = "Box";
box.id = nodesHolder.length;
box.parameters = {
parm1: Math.floor((Math.random() * 10) + 1),
parm2: Math.floor((Math.random() * 10) + 1),
parm3: Math.floor((Math.random() * 10) + 1)
};
//Push box into nodes holder array
nodesHolder.push(box);
}
}
});
當點擊它創建填充陣列,我的list.component.js的對象:(在視圖中爲圓形示出):
angular.module('list').component('list', {
templateUrl: 'list.template.html',
controller: function nodesController(UiService) {
this.nodes = UiService.getNodesHolder().children;
this.selected = function (value) {
var nodes = UiService.getNodesHolder();
UiService.selected = nodes.children[value];
}
}
});
,並且還顯示其名稱和參數通過PARMS-bar.component:
angular.module('parms-bar').component('parmsbar', {
templateUrl: 'parms-bar.template.html',
controller: function parmsController(mainService){
this.selected = mainService.selected;
}
});
這些組件之間的通信由兩個服務管理。一個用於檢測所選擇的對象,main.service.js:
angular.module('app').service('mainService', function(){
var selected = {};
var service = {
get selected(){
return selected;
},
set selected(value){
selected = value;
}
}
return service;
});
和一個其返回的項目列表中的(圓圈),ui.service.js:
angular.module('app').service('UiService', function(){
//Nodes-holder
var nodesHolder = { children: []};
return {
getNodesHolder: function() {
return nodesHolder;
}
};
});
當我點擊一個圓,我想切換到相應的對象,所以顯示它的參數,但這是行不通的。似乎參數視圖只是由盒控制器更新。可能在我的list.component.js
中出現錯誤,我嘗試將該圓圈設置爲選中狀態?
this.selected = function (value) {
var nodes = UiService.getNodesHolder();
UiService.selected = nodes.children[value];
}
與例如亂搞(添加一個'的console.log(值)'來選擇) ,不管你點擊哪個圈子,'id'都是一樣的 – Vasseurth
@Vasseurth - 的確如此。實際上,在我原來的項目中,它返回了我正確的ID,它只是不更新視圖。我搞砸了一些試圖推斷這個問題的例子。我會盡力修復它 – leota