Javascript 为什么只能更新工厂对象,而不能更新AngularJS中的变量?

Javascript 为什么只能更新工厂对象,而不能更新AngularJS中的变量?,javascript,angularjs,Javascript,Angularjs,我正在努力学习如何更好地用Angular编写代码,所以如果还有更好的方法,请告诉我 基本上,我有一个切换状态,它在我的应用程序中的很多地方都使用。这是存储在一个Cookie我有一个服务,这也是实时更新的用户 我的工厂切换工厂: 在我的控制器中: $scope.toggleState = ToggleFactory.state; $scope.onToggle = function() { $scope.toggleState = ToggleFactory.toggle(); };

我正在努力学习如何更好地用Angular编写代码,所以如果还有更好的方法,请告诉我

基本上,我有一个切换状态,它在我的应用程序中的很多地方都使用。这是存储在一个Cookie我有一个服务,这也是实时更新的用户

我的工厂切换工厂:

在我的控制器中:

$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();
};
现在它可以工作了,因为作用域绑定到该对象,我可以在我的工厂中更新该对象,这反映在作用域中。。。。但是为什么我不能用一个基本变量来做呢


希望这有意义

有一篇很好的博文解释了对象和原语之间的区别。感谢,工厂和服务的整个使用仍然让我困惑: