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 
     }); 

不幸的是這兩個沒」在控制檯上打印任何東西。該方法的任何問題?

回答

6

此行意味着$ rootScope(最高作用域級別)將向所有孩子(您的應用程序的作用域)廣播名爲「rootScope:Object」的事件。

根據https://docs.angularjs.org/api/ng/type/ $ rootScope.Scope,你可以添加參數到$broadcast()函數,在你的情況下,傳遞你的對象。 您將有:

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

希望它能幫助:

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

在你的孩子的範圍,你可以輕鬆地檢索此。

編輯:這裏有一個codepen顯示加載和使用從API顯示數據廣播$/$上

+0

正如我在這裏所說的「myObject」是一個從api響應返回的數組,我可以在我的子作用域中使用它,並將它分配給其他數組嗎? – user168983

+0

是的,你可以。我用一個簡單的api調用和響應顯示,基於$ broadcast/$ on做了一個小小的codepen:http://codepen.io/anon/pen/ENvjVY – JulCh

1

不知道我理解你的問題,但確實broadcast無非向下分派事件到所有子範圍。

所以,在你的服務,你可能希望有類似:

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

而且在你要聽此事件的地方,你就會有這樣的事情:

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

希望有所幫助。

+0

它實際上更有可能具有'$ scope。 $ on..',而不是'$ rootScope。$ on ...'。另外,你的對象將是你回調的第二個參數,第一個是事件對象 –

+0

好點,@NexusDuck。我將編輯答案。 –