我正在尝试学习如何在Angular中更好地编码,所以如果还有更好的方法可以让我知道。
基本上,我有一个“切换”状态,它在我的应用程序周围的很多地方使用。它存储在Cookie中(我有一个服务),并且还为用户实时更新。
我的工厂ToggleFactory
:
var toggle = Cookie.check('toggle') ? Cookie.get('toggle') : false;
return {
state: toggle,
toggle: function() {
if(!this.state) {
Cookie.set('toggle', true);
this.state = true;
return true;
}
else {
Cookie.set('toggle', false);
this.state = false;
return false;
}
}
};
在我的控制器中:
$scope.toggleState = ToggleFactory.state;
$scope.onToggle = function() {
$scope.toggleState = ToggleFactory.toggle();
};
这是正常的,但是我知道有更好的方法可以做到这一点,而不返回任何东西......但是,如果我更新绑定到state
的对象,而不是更新,我只能使它工作变量:
var obj = {
toggle: Cookie.check('toggle') ? Cookie.get('toggle') : false;
}
return {
state: obj,
toggle: function() {
if(!this.state) {
Cookie.set(cookieKey, true);
obj.toggle = true;
}
else {
Cookie.set(cookieKey, false);
obj.toggle = false;
}
}
};
控制器:
$scope.rotwState = ToggleFactory.obj.toggle;
$scope.onToggle = function() {
ToggleFactory.toggle();
};
现在这个工作,因为范围绑定到该对象,我可以更新我的工厂中的对象,这反映在范围内....但为什么我不能用基本变量做这个?
希望有意义!