我正在使用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,但我有同样的问题:没有收到任何事件。
我无法使用服务。
我一定是弄错了,但我不知道在哪里。你能救我吗?
答案 0 :(得分:0)
找到解决方案:
1)将get请求移动到第二个控制器 2)通过添加用于构建FIND_URL的参数作为URL参数来更改路由 3)使用$ routeParams访问第二个控制器中传递的参数。