我试图从另一个控制器内的控制器访问一个对象。 例如:
控制器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中控制对象.log一个对象?
MyApp.controller('projectController', function ($scope) {
console.log('$scope.xList[1]);
});
我也尝试了$ scope.workController.xList [1],但没有用。
请帮忙
答案 0 :(得分:2)
范围 ...为了在控制器之间共享数据,您仍然可以选择使用$scope.$parent
或$rootScope
链接控制器,但我会使用那些仔细。
Angular Services基于单身模式。您也可以使用它们在控制器之间共享信息,我认为这将是最好的方法。
我发现之前已经讨论过,这里有一些很好的例子:
答案 1 :(得分:2)
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
}
});