Angular:将视图中的变量传递给另一个视图

时间:2017-01-09 11:17:59

标签: angularjs

在我的应用中,用户在第一个视图中设置他/她的性别,然后将其存储在localStorage中。

$scope.setGender = function(gender){
    $scope.data.gender = gender;
    localStorage.setItem('paramGender', $scope.data.gender);
}

然后,用户通过阅读localStorage转到第二个视图并在代码中读取其性别:

$scope.data.gender = localStorage.getItem("paramGender"));

但是,如果用户返回第一个视图,更改他/她的性别并返回第二个视图,则$scope.data.gender未在第二个控制器中更新。

如何在不重新加载整个第二个视图的情况下实现这一点(我需要保留缓存,因为第二个视图很重)?

由于

1 个答案:

答案 0 :(得分:0)

我只会在这种情况下使用事件和服务。

app.factory('GenderService', [function() {
    var self = this;  
    self.gender = null;

      return {
        setGender: function(gender) {
          self.gender = gender;
        },
        getGender: function(){
          return self.gender;
        }
    }  
}]);

$scope.setGender = function(gender){
  $scope.data.gender = gender;
  GenderService.setGender(gender);
  $rootScope.$broadcast('genderUpdated', gender);
}

然后在你的另一个控制器中:

    $scope.data.gender = GenderService.getGender();
    $scope.$on('genderUpdated', function(event, data){
        $scope.data.gender = data;
    })

此致