AngularJS两个控制器之间的数据共享

时间:2015-07-10 08:55:41

标签: angularjs

我在2个控制器和2个视图之间共享数据时遇到问题。我有2个看法。我创建了2个独立的控制器并绑定了2个不同的视图。现在我在2个控制器之间有2个共享数据,所以我创建了一个服务。问题是一个控制器从远程源获取数据,而其他控制器正在使用该数据。但是首先消耗数据的视图会加载,因此从远程源中提取的数据并不完全由第一个使用。例如

/html5/test2,
/html5/test1

问题是“SongGenreController”首先因为HTML加载而首先加载。我想在数据加载成功时填充它。 “songGenreService.getGenres();”不与远程源一起运行。

1 个答案:

答案 0 :(得分:1)

我修复类似问题的方法是使用发布订阅机制。 在您的服务中,您可以在添加类型时进行发布,如下所示:

var addGenres = function (newObj) {
         genreList = newObj;
         $rootScope.$broadcast('genresUpdated, genreList);
    };

然后在您的两个控制器中订阅该事件:

$scope.$on('genresUpdated', function(event, genreList){
     $scope.genres = genreList;
     // and other code you want to have triggered when the genreList changes
});