Javascript 为什么只能更新工厂对象,而不能更新AngularJS中的变量?
我正在努力学习如何更好地用Angular编写代码,所以如果还有更好的方法,请告诉我 基本上,我有一个切换状态,它在我的应用程序中的很多地方都使用。这是存储在一个Cookie我有一个服务,这也是实时更新的用户 我的工厂切换工厂: 在我的控制器中:Javascript 为什么只能更新工厂对象,而不能更新AngularJS中的变量?,javascript,angularjs,Javascript,Angularjs,我正在努力学习如何更好地用Angular编写代码,所以如果还有更好的方法,请告诉我 基本上,我有一个切换状态,它在我的应用程序中的很多地方都使用。这是存储在一个Cookie我有一个服务,这也是实时更新的用户 我的工厂切换工厂: 在我的控制器中: $scope.toggleState = ToggleFactory.state; $scope.onToggle = function() { $scope.toggleState = ToggleFactory.toggle(); };
$scope.toggleState = ToggleFactory.state;
$scope.onToggle = function() {
$scope.toggleState = ToggleFactory.toggle();
};
$scope.rotwState = ToggleFactory.obj.toggle;
$scope.onToggle = function() {
ToggleFactory.toggle();
};
好的,这是可行的,但是我知道有一个更好的方法,不返回任何东西。。。但是,只有更新绑定到状态的对象,而不是变量,我才能使其工作:
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.toggleState = ToggleFactory.state;
$scope.onToggle = function() {
$scope.toggleState = ToggleFactory.toggle();
};
$scope.rotwState = ToggleFactory.obj.toggle;
$scope.onToggle = function() {
ToggleFactory.toggle();
};
现在它可以工作了,因为作用域绑定到该对象,我可以在我的工厂中更新该对象,这反映在作用域中。。。。但是为什么我不能用一个基本变量来做呢
希望这有意义 有一篇很好的博文解释了对象和原语之间的区别。感谢,工厂和服务的整个使用仍然让我困惑: