我有一个导航栏控制器,我有一个搜索书籍的搜索栏。在我的navbar ui-router状态下,我解析了这些书并在Books服务中进行了设置。结果,我可以访问所有书籍。这不仅仅是在导航栏中,而是从那一点开始跨越所有控制器。
但是,在我的摘要信息中心中,我想列出我已经提取的所有图书。我想使用Books服务,而不是重做拉书的电话。如果我在摘要仪表板上启动应用程序,我遇到了问题,因为摘要仪表板不知道如何等待从导航栏填充Books服务。
我的问题是如何让摘要仪表板等待导航栏控制器解析图书服务?
答案 0 :(得分:1)
您的导航栏可以广播一个事件,您的摘要信息中心可以等待它。
导航栏控制器
$scope.$broadcast('booksLoaded', books);
摘要仪表板控制器
$scope.$on('booksLoaded', function(event, books) {
$scope.books = books;
});
另一种选择是使用服务临时存储数据。
angular.module('app').factory('BooksService', BooksService);
function BooksService() {
return {
getBooks: getBooks,
setBooks: setBooks
};
var _books = [];
function getBooks() {
return _books;
}
function setBooks(books) {
_books = books;
}
}