簡體   English   中英

如何從Angular中另一個控制器內部的控制器訪問對象

[英]How to access object from a controller inside another controller in Angular

我試圖從另一個控制器內的一個控制器訪問對象。 例如:

控制器1

MyApp.controller('workController', function ($scope) {

    $scope.xList = [
    {name:'test', type:'web', link:'test', image:'iso.jpg'},
    {name:'test', type:'web', link:'test', image:'iso.jpg'},
    ];

});

控制器2:如何從控制器1控制台記錄一個對象?

MyApp.controller('projectController', function ($scope) {
    console.log('$scope.xList[1]);
});

我也嘗試了$ scope.workController.xList [1],但是沒有用。

請幫忙

范圍是為每個控制器定義的...為了在控制器之間共享數據,您仍然可以選擇使用$scope.$parent$rootScope來鏈接控制器,但是我會謹慎地使用它們。

Angular Services基於單例模式。 您也可以使用它們在控制器之間共享信息,我認為這將是最好的方法。

我發現之前已經討論過了,這里有一些很好的例子:

AngularJS服務在控制器之間傳遞數據

Angular控制器的目的是將視圖和服務聯系在一起。 因此,他們並不是真的想直接互相交談。 如果需要在控制器之間進行通信,則可以使用共享服務。

MyApp.controller('workController', function($scope, SharedService){
    SharedService.set([
        {name:'test', type:'web', link:'test', image:'iso.jpg'},
        {name:'test', type:'web', link:'test', image:'iso.jpg'},
    ]);
});

MyApp.controller('projectController', function($scope, SharedService){
    console.log(SharedService.get());
});

MyApp.service('SharedService', function(){
    var self = {
        get: function(data){
            return self._data;
        },
        set: function(data){
            self._data = data
        }
    };

    return {
        get: self.get,
        set: self.set
    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM