题
我有这个服务,以保持应用的状态最新。
'use strict';
angular.module('reportApp')
.service('Status', function Status() {
this.appStatus = {};
// Status
this.get = function(){
this.appStatus = {
menu:{
right:{
activeOption: 'datax'
},
left:{
}
},
section:{
selectedSection: null
}
};
return this.appStatus;
};
this.setActiveOptionRightMenu = function(menu){
this.appStatus.menu.right.activeOption = menu.id;
};
this.setActiveSection = function(section){
this.appStatus.section.selectedSection = section;
};
// ####################################
});
.
在我的主控制器中我有这个:
$scope.openRightMenu = function(menu){
Status.setActiveOptionRightMenu(menu);
$scope.menu = Status.get().menu;
};
$scope.menu = Status.get().menu;
.
当控制器加载时的第一时刻它得到右默认值:
$scope.menu = Status.get().menu;
.
在第一时刻,我期待 activeoption:'datax',它是对的。但事件后点击查看调用 opennightmenu 视图不会更新新值。如果我在 setactiveoptionstionmenu 中放置了一个断点我可以看到设置的新值,但在看起来像视图忽略新值并继续使用旧值。 解决方案
在您的get函数中,您将覆盖this.appStatus
:
// Status
this.get = function(){
this.appStatus = {
menu:{
right:{
activeOption: 'datax'
},
left:{
}
},
section:{
selectedSection: null
}
};
return this.appStatus;
};
.
这将始终返回此对象的vistuptatus与vistoptatus定义为“datax”。您应该将其定义它在Get函数之外的默认值,或检查它是否为null。
// Status
this.appStatus = {
menu:{
right:{
activeOption: 'datax'
},
left:{
}
},
section:{
selectedSection: null
}
};
this.get = function(){
return this.appStatus;
}
. 不隶属于 StackOverflow