1

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

$rootScope.$broadcast('rootScope:Object') 

这里的 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
        });

不幸的是,两者都没有在控制台上打印任何东西。方法有什么问题吗?

4

2 回答 2

6

这一行意味着 $rootScope(最高范围级别)将向所有子级(您的应用程序的范围)广播一个名为“rootScope:Object”的事件。

根据https://docs.angularjs.org/api/ng/type/$rootScope.Scope,您可以向$broadcast()函数添加参数,以在您的情况下传递您的对象。你将会有:

$rootScope.$broadcast('rootScope:Object', myObject)

在您的子范围内,您可以通过以下方式轻松检索:

$scope.$on('rootScope:Object', function(e, params){
     console.log(params); // myObject
});

希望能帮助到你。

编辑:这是一个代码笔,显示使用 $broadcast/$on 从 API 加载和显示数据

于 2016-11-25T14:55:46.063 回答
1

不确定我是否理解您的问题,但广播只不过是将事件向下发送到所有子范围。

因此,在您的服务中,您可能希望拥有以下内容:

$rootScope.$broadcast('myEventNameHere', actualJavascriptObjectHere);

在你想听这个事件的地方,你会有这样的东西:

 $scope.$on('myEventNameHere', function(actualJavascriptObjectHere) { 
      console.log(actualJavascriptObjectHere); 
 });

希望有帮助。

于 2016-11-25T14:58:12.487 回答