查看没有获得新值

时间:2014-07-28 17:36:41

标签: angularjs angularjs-service

我有此服务可以保持应用状态的最新状态。

'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',这是正确的。但是在事件发生后单击调用 openRightMenu 的视图时,视图不会更新新值。如果我在 setActiveOptionRightMenu 中放置一个断点,我可以看到设置的新值,但在此之后看起来会忽略新值并继续使用旧值。

1 个答案:

答案 0 :(得分:0)

在你的get函数中,你将覆盖this.appStatus

 // Status
this.get = function(){

    this.appStatus = {

        menu:{
            right:{
                activeOption: 'datax'
            },
            left:{

            }
        },
        section:{
            selectedSection: null
        }

    };

    return this.appStatus;

};

这将始终返回this.appStatus的此对象,并将activeOption定义为' datax'。您应该使用get函数之外的默认值来定义它,或者检查它是否为null。

// Status
this.appStatus = {

        menu:{
            right:{
                activeOption: 'datax'
            },
            left:{

            }
        },
        section:{
            selectedSection: null
        }

      };
this.get = function(){
      return this.appStatus;
}