如何从Angular中另一个控制器内的控制器访问对象

时间:2015-06-23 00:52:50

标签: javascript angularjs

我试图从另一个控制器内的控制器访问一个对象。 例如:

控制器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],但没有用。

请帮忙

2 个答案:

答案 0 :(得分:2)

每个控制器都定义

范围 ...为了在控制器之间共享数据,您仍然可以选择使用$scope.$parent$rootScope链接控制器,但我会使用那些仔细。

Angular Services基于单身模式。您也可以使用它们在控制器之间共享信息,我认为这将是最好的方法。

我发现之前已经讨论过,这里有一些很好的例子:

AngularJS Service Passing Data Between Controllers

答案 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
    }
});