![](/img/trans.png)
[英]How to share $scope properties, not its value between two controllers in angularjs?
[英]How to share a $scope object between multiple controllers
我在2個控制器之間共享$ scope對象時遇到問題。
在控制器“ IssueBookCtrl”中,我正在像這樣更新books對象元素的值。
$ scope.books [i] .issued = true;
然后,我使用$ emit服務與控制器'BookListCtrl_Librarian'共享$ scope對象。
$ scope。$ emit('update_parent_controller',$ scope.books);
但是,當我運行使用控制器'BookListCtrl_Librarian'的視圖時,我看不到更新的對象。
controller.js
Controllers.controller('BookListCtrl_Librarian', ['$scope','$http','$location','$rootScope','BookData',
function ($scope, $http ,$location, $rootScope , BookData) {
$http.get('data/books.json').success(function(data) {
if($rootScope.books==='undefined'){
$rootScope.books = BookData.getData();
}
$scope.books = data;
});
$scope.options = ['bookId', 'cost'];
$scope.$on("update_parent_controller", function(event, books){
$scope.books = books;
});
$scope.issue = function(bookId) {
for (var i = 0, len = $scope.books.length; i < len; i++) {
if ($scope.books[i].bookId == bookId) {
$rootScope.book = $scope.books[i];
break;
}
}
$location.path('/issue/'+bookId);
}
$scope.return = function (bookId) {
for (var i = 0, len = $scope.books.length; i < len; i++) {
if ($scope.books[i].bookId == bookId) {
$rootScope.book = $scope.books[i];
break;
}
}
$location.path('/return/'+bookId);
}
$scope.backToLogin = function() {
$location.path("/main");
}
}]);
Controllers.controller('IssueBookCtrl', ['$scope','$rootScope','$http','$routeParams','$location',
function ($scope,$rootScope, $http, $routeParams, $location) {
var Id=$routeParams.bookId;
$http.get('data/books.json').success(function(data) {
$scope.books = data;
});
$scope.issue = function(Id) {
alert("issued");
for (var i = 0, len = $scope.books.length; i < len; i++) {
if ($scope.books[i].bookId === Id) {
$scope.books[i].issued = true;
$scope.$emit('update_parent_controller', $scope.books);
$location.path('/home/librarian');
break;
}
}
}
}]);
請指導我,非常感謝您的幫助。
謝謝
您好,您必須使用rootscope而不是作用域發射
$rootScope.$emit('update_parent_controller', $scope.books);
和其他控制器
$rootScope.$on('update_parent_controller', function(event, books){
$scope.books = books;
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.