2015-06-23 56 views
0

我想從另一個控制器內的控制器訪問一個對象。 例如:如何從角度中的另一個控制器內的控制器訪問對象

控制器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:如何從CONSOLE.LOG控制器1的對象?

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

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

請幫

+0

簽出[rootScope](https://docs.angularjs.org/api/ng/service/$rootScope)用於在控制器之間進行通信的方式。它可以通過控制器上的數據廣播消息,這些控制器將收聽。的[AngularJS服務傳遞數據控制器之間] – area28

+0

可能重複(http://stackoverflow.com/questions/17952620/angularjs-service-passing-data-between-controllers) – Dalorzo

+0

它得到work.Thanks! –

回答

2

角控制器的目的是綁在一起觀看和服務。出於這個原因,他們並不是真的想直接和對方說話。如果你需要在控制器之間進行通信,你可以使用共享服務來完成。

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 
    } 
}); 
2

範圍每控制器...定義爲了要共享控制器,你還是要用$scope.$parent$rootScope鏈接控制器的選擇,但我會仔細地使用這些數據。

角服務都是基於單模式。您也可以使用這些在控制器之間共享信息,我認爲這將是最好的方法。

我發現,這個前面已經討論這裏有一些很好的例子:

AngularJS Service Passing Data Between Controllers

相關問題