【问题标题】:How to access object from a controller inside another controller in Angular如何从Angular中另一个控制器内的控制器访问对象
【发布时间】:2015-09-08 15:01:10
【问题描述】:

我正在尝试从另一个控制器中的控制器访问对象。 例如:

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

请帮忙

【问题讨论】:

标签: javascript angularjs


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    范围是按控制器定义的...为了在控制器之间共享数据,您仍然可以选择使用 $scope.$parent$rootScope 来链接控制器,但我会谨慎使用它们。

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

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

    AngularJS Service Passing Data Between Controllers

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-30
      • 2015-10-31
      • 1970-01-01
      • 2017-03-23
      • 1970-01-01
      • 1970-01-01
      • 2018-06-15
      • 1970-01-01
      相关资源
      最近更新 更多