Javascript $rootScope.$AngularJS中的广播使用

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

我正在使用一个应用程序,我在service.js中的一个服务末尾有下面一行

$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调用和响应显示的小代码笔: