簡體   English   中英

AngularJS中的$ rootScope。$ broadcast用法

[英]$rootScope.$broadcast usage in AngularJS

我正在使用一個應用程序,其中在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
        });

不幸的是,兩者均未在控制台上打印任何內容。 方法有問題嗎?

這行意味着$ 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加載和顯示數據

不確定我是否理解您的問題,但是廣播僅向所有子作用域發送事件。

因此,在您的服務中,您可能希望擁有以下內容:

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

在您想收聽此事件的地方,您將看到以下內容:

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

希望能有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM