我在2个控制器和2个视图之间共享数据时遇到问题。我有2个看法。我创建了2个独立的控制器并绑定了2个不同的视图。现在我在2个控制器之间有2个共享数据,所以我创建了一个服务。问题是一个控制器从远程源获取数据,而其他控制器正在使用该数据。但是首先消耗数据的视图会加载,因此从远程源中提取的数据并不完全由第一个使用。例如
/html5/test2,
/html5/test1
问题是“SongGenreController”首先因为HTML加载而首先加载。我想在数据加载成功时填充它。 “songGenreService.getGenres();”不与远程源一起运行。
答案 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
});