【发布时间】:2017-09-22 13:17:12
【问题描述】:
我的 index.htm 中有两个页面 pageA.html 和 pageB.html。
在 app.js 中我使用了 ui-router。
当我的应用运行 java 控制器时,将应用重定向到 index.html,其中 $urlRouterProvider 默认激活 pageA。
所以在 index.html 我有
<div ng-app="myApp">
<span>{{user.name} {{user.firstname}}</span>
<a href="#pageA"><a/>
<a href="#pageB"><a/>
<div ui-view ></div>
</div>
在 app.js 中
$urlRouterProvider.when('', '/pageA');
$stateProvider
.state('home', {
url : '/home',
views : {
"" : {
templateUrl : 'index.html',
controller : 'IndexController'
}
}
})
.state('pageA', {
url : '/pageA',
views : {
"" : {
templateUrl : 'pageA.html',
controller : 'pageAController'
}
}
})
.state('pageB', {
url : '/pageB',
views : {
"" : {
templateUrl : 'pageB.html',
controller : 'pageBController'
}
}
})
});
我尝试在 IndexController 和 PageAController 中设置用户变量:
$scope.user = UserService.getConnectedUser();
问题是在 index.html 中无法识别用户。
我不知道如何通过那里?
更新:
我尝试了建议的解决方案: 我在我的 IndexController.js 中添加了
$rootScope.$broadcast('HomeEvent', "String"); // going down
$scope.$on("HomeEvent", function (evt, data) {
$scope.Message = "Inside HomeController : " + data;
});
在我的 PageAController.js 中:
$rootScope.$on('HomeEvent', function (event, data) {
$scope.Message = "Inside PageAController : " + data;
console.log("data getted ="+$scope.Message); // 'Some data'
});
它甚至没有输入 $on ,我是不是错过了什么?
【问题讨论】:
-
查看广播(调用链下的函数)和发射(调用链上的函数)。这就是我们通常用来在控制器之间传递信息的方式
-
谢谢,很有趣,我尝试使用它,你能看到我的问题的更新吗,它没有进入 $on ti handler 事件
-
我尝试使用 $timeout(function(){},500);为了等待孩子被创建
-
很抱歉直到现在才看到您的回复。很高兴你知道了。
标签: javascript html angularjs spring-mvc