从另一个控制器获取数据

时间:2015-10-31 12:17:59

标签: angularjs

我有一个控制器。

app.controller('first',['$scope','scopeService', function ($scope,scopeService){

$scope.initialize = function()
{
    scopeService.store('value', $scope);
}

}]);

我的第二个控制器是

app.controller('second',['$scope','scopeService', function ($scope,scopeService){

$scope.initialize = function()
{
    scopeService.get('value', $scope);
}

}]);

但我的第二个控制器在第一次被加载之前所以我得到了未定义的值..

1 个答案:

答案 0 :(得分:1)

您可以通过两种不同的方式在控制器之间传递数据。一种方法是使用服务来获取和存储数据。然后两个控制器都可以从服务本身获取数据。服务是单例,所以如果它将数据存储在其变量中,那么另一个控制器也可以获得。

另一种方法是使用Angular事件。您可以从第二个控制器发出事件,让第一个控制器监听事件。

示例代码,发出事件:

$scope.$emit('event-name', {data: someDate});

然后使用$ rootScope:

接收事件
$rootScope.$on('event-name', function (event, data) {
    //do something with data
});

在您的情况下,您应该在控制器收到数据时发出事件。然后听取此事件的第一个控制器也将获得数据。