我有一个控制器可以创建一个电影列表。控制器通过调用工厂内的函数来完成此操作,然后将响应放在一个范围内,在视图中显示它。
我还有一个不同的控制器,我有一个addMovie函数。因此,用户可以将电影添加到其关注列表中。我的问题是,当用户添加电影时,视图(或更好的第一个控制器的范围)不会更新,我必须重新加载页面才能看到新添加的电影。
当调用addMovie函数时,从第一个控制器调用该函数(从工厂获取数据并将其放入作用域)的最佳方法是什么?
addMovieController:
$scope.addMovie = function (movie) {
movieaddFactory.selectMovie(movie).then(function(response){
movieaddFactory.addMovie(response);
Notification.success(movie.title + ' has been added to your watchlist');
$scope.movies = [];
$scope.overlay = false;
$scope.searchquery = ''
});
};
getMovieController:
getmovieFactoryFN = function(){
getmovieFactory.getMovies().then(function(response){
$scope.mmovies = response;
})
}
澄清我想在addMovieController中调用addMovie函数时调用getMovieController中的getmovieFactoryFN。
答案 0 :(得分:1)
使用$broadcast
之类的:
$scope.addMovie = function (movie) {
movieaddFactory.selectMovie(movie).then(function(response){
movieaddFactory.addMovie(response);
Notification.success(movie.title + ' has been added to your watchlist');
$scope.movies = [];
$scope.overlay = false;
$scope.searchquery = ''
$rootScope.$broadcast('onAddMovieEvent', {/* some data */});
});
};
在其他控制器中:
$scope.$on('onAddMovieEvent', function (event, _data) {
// event.preventDefault(); // if you want to stop this event to spread over all your application
getmovieFactoryFN();
});