Javascript $rootScope.$AngularJS中的广播使用
我正在使用一个应用程序,我在service.js中的一个服务末尾有下面一行Javascript $rootScope.$AngularJS中的广播使用,javascript,angularjs,angularjs-directive,angularjs-rootscope,Javascript,Angularjs,Angularjs Directive,Angularjs Rootscope,我正在使用一个应用程序,我在service.js中的一个服务末尾有下面一行 $rootScope.$broadcast('rootScope:Object') 这里的对象是API服务的输出。如果我现在想在实际的app.js文件中使用此对象,我该如何使用它?上一行指定了什么以及如何在后面的页面中使用它 感谢您的帮助 编辑: 根据给出的答案,尝试了以下内容: 在服务页面中: this.getobject=function(){ //http api Function call with resu
$rootScope.$broadcast('rootScope:Object')
这里的对象是API服务的输出。如果我现在想在实际的app.js文件中使用此对象,我该如何使用它?上一行指定了什么以及如何在后面的页面中使用它
感谢您的帮助
编辑:
根据给出的答案,尝试了以下内容:
在服务页面中:
this.getobject=function(){
//http api Function call with result as response.data = resp
$rootScope.$broadcast('rootScope:resp',resp);
}
在子作用域页面中:
resp=[];
$rootScope.$on('rootScope:resp',function(resp) {
$scope.resp=resp;
console.log(resp);
});
$scope.$on('rootScope:resp', function(e, params){
console.log(params); // respobject
});
不幸的是,两者都没有在控制台上打印任何内容。该方法有任何问题吗?这一行表示$rootScope(最高作用域级别)将向所有子项(应用程序的作用域)广播一个名为“rootScope:Object”的事件 根据$rootScope.Scope,您可以向
$broadcast()
函数添加参数,以便在您的情况下传递对象。
你将有:
$rootScope.$broadcast('rootScope:Object', myObject)
在子作用域中,您可以通过以下方式轻松检索:
$scope.$on('rootScope:Object', function(e, params){
console.log(params); // myObject
});
希望能有帮助
编辑:这是一个使用$broadcast/$on从API加载和显示数据的示例。这一行表示$rootScope(最高作用域级别)将向所有子级(应用程序的作用域)广播一个名为“rootScope:Object”的事件 根据$rootScope.Scope,您可以向
$broadcast()
函数添加参数,以便在您的情况下传递对象。
你将有:
$rootScope.$broadcast('rootScope:Object', myObject)
在子作用域中,您可以通过以下方式轻松检索:
$scope.$on('rootScope:Object', function(e, params){
console.log(params); // myObject
});
希望能有帮助
编辑:下面是一个使用$broadcast/$on从API加载和显示数据的示例我不确定是否理解您的问题,但只不过是将事件向下分派到所有子作用域 因此,在您的服务中,您可能需要:
$rootScope.$broadcast('myEventNameHere', actualJavascriptObjectHere);
在你想听这个活动的地方,你会听到这样的东西:
$scope.$on('myEventNameHere', function(actualJavascriptObjectHere) {
console.log(actualJavascriptObjectHere);
});
希望这能有所帮助。我不确定是否理解您的问题,但我所做的只是将事件向下发送到所有子作用域 因此,在您的服务中,您可能需要:
$rootScope.$broadcast('myEventNameHere', actualJavascriptObjectHere);
在你想听这个活动的地方,你会听到这样的东西:
$scope.$on('myEventNameHere', function(actualJavascriptObjectHere) {
console.log(actualJavascriptObjectHere);
});
希望这能有所帮助。实际上,您更有可能使用
$scope.$on..
而不是$rootScope.$on…
。此外,您的对象将是回调的第二个参数,第一个是事件对象。实际上,您更有可能使用$scope.$on..
而不是$rootScope.$on..
。另外,您的对象将是回调的第二个参数,第一个是事件对象,正如我在这里所说,“myObject”是从api响应返回的数组,我可以在我的子范围中使用它并将其分配给其他数组吗?是的,您可以。我制作了一个基于$broadcast/$on的简单api调用和响应显示的小代码笔:正如我在这里所说,“myObject”是从api响应返回的数组,我可以在我的子作用域中使用它并将其分配给其他数组吗?是的,可以。我基于$broadcast/$on制作了一个带有简单api调用和响应显示的小代码笔: