AngularJS:将事件发送到另一个控制器并重定向到新位置

时间:2015-02-07 17:48:18

标签: javascript angularjs

我正在使用AngularJS,我正在尝试切换到一个新视图并发送一个事件,另一个控制器(管理新视图的控制器)应该拦截和详细说明。

与此同时,当前控制器正在发送HTTP请求,其响应将作为参数传递给事件。这是第一个控制器的代码:

// do some stuff and initialize FIND_URL and nextpage variables 
$http.get(FIND_URL).success(function(response) { 
    details = response;
    $rootscope.$broadcast('detailsReceived', details);
});

$location.path(nextpage);

建立FIND_URL将参数附加到基本URL。 事件已正确发送。另一个控制器如下:

appName.controller("otherController", function($rootScope) {
    console.log("Initialize");
    $rootScope.$on('detailsReceived', function(event, details) {
        console.log("EventReceived");
        if(details) {
            $scope.localDetails = details;
        }
    });
});

控制器不相关:每个html页面指的是一个控制器。 但是,otherController没有收到该事件,但是已初始化。此外,正确显示了nextpage,但当然是空的,因为由于未收到事件,细节不在其范围内。 我也尝试使用$ scope而不是$ rootScope,但我有同样的问题:没有收到任何事件。

我无法使用服务。

我一定是弄错了,但我不知道在哪里。你能救我吗?

1 个答案:

答案 0 :(得分:0)

找到解决方案:

1)将get请求移动到第二个控制器 2)通过添加用于构建FIND_URL的参数作为URL参数来更改路由 3)使用$ routeParams访问第二个控制器中传递的参数。