![](/img/trans.png)
[英]What is the difference between $rootScope vs $rootScope.$emit/$broadcast in AngularJS?
[英]$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.