angularjs - AngularJS 将数据广播到 iframe
问题描述
如何从 index.html 获取用户名?
索引.html
{{username}}
索引控制器:
app.controller('index',function($scope,$rootScope,mainService){
$scope.getUsername = funciton(){
mainService.getUsername().then{
function successCallback(response){
$rootScope.username = response.data.username;
}
}
}
})
iframe.html
{{user}}
iframe 控制器
app.controller('iframe',function($scope,$rootScope){
$scope.user = $rootScope.username
})
但{{user}}
什么也不显示
另外,我尝试通过服务发布消息,dataService.username
结果是一样的。
解决方案
用于$rootScope.$broadcast
引发事件,事件名称的第一个参数和用于传递参数的可选第二个参数。
app.controller('IndexController', function ($scope, $rootScope, MainService) {
$scope.getUsername = function() {
MainService.getUsername().then(function (response) {
$rootScope.$broadcast('username-fetched', { username: response.data.username });
});
};
});
然后使用捕获另一个控制器上的事件$scope.$on
。
app.controller('IframeController', function ($scope) {
$scope.$on('username-fetched', function (event, data) {
$scope.user = data.username;
});
});
推荐阅读
- docker - 从 Jenkins 管道中的 docker 代理运行时,Ansible 失败
- google-apps-script - 谷歌表格脚本基于单元格值导入数据而不是重复信息
- flutter - Dart/Flutter 中 Money 的数据类型
- python - 如何在训练张量流期间设置层权重
- javascript - vue动态表单
- php - 使用 MySql 和 PHP 从具有多行的列中提取两个值
- gradle - IntelliJ 找不到 ANTLR 生成的源
- java - 如何分割 JTS 多边形
- java - 如何对Java文本文件中列中的数字求和?
- python - 有没有办法使用通用视图将 ID 从 URL 传递到 views.py?