亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么我們在AngularJS中使用$ rootScope。$ broadcast?

為什么我們在AngularJS中使用$ rootScope。$ broadcast?

慕無忌1623718 2019-10-25 10:50:15
試圖找到AngularJS的一些基本信息$rootScope.$broadcast,但是AngularJS文檔并沒有太大幫助。簡單地說,我們為什么要使用它?另外,在約翰·帕帕(John Papa)的Hot Towel模板中,通用模塊中有一個自定義函數$broadcast:function $broadcast() {    return $rootScope.$broadcast.apply($rootScope, arguments);}我不明白這是怎么回事。因此,這是幾個基本問題:1)怎么$rootScope.$broadcast辦?2)$rootScope.$broadcast和之間有什么區別$rootScope.$broadcast.apply?
查看完整描述

3 回答

?
慕森王

TA貢獻1777條經驗 獲得超3個贊

  1. 怎么$rootScope.$broadcast辦?

    $rootScope.$broadcast正在通過應用程序范圍發送事件。該應用程序的所有子級范圍都可以使用以下簡單方法來捕獲它:$scope.$on()。

    當您想要到達不是直接父級的范圍(例如,父級的分支)時,發送事件特別有用

    !!! 但是,要做的一件事是$rootScope.$on從控制器使用。$rootScope是應用程序,當控制器被銷毀時,事件偵聽器將仍然存在,而當再次創建控制器時,它將堆積更多的事件偵聽器。(因此,一次廣播將被多次捕獲)。使用$scope.$on()代替,聽眾也將被銷毀。

  2. $rootScope.$broadcast&和有$rootScope.$broadcast.apply什么區別?

    有時您必須使用apply(),尤其是在使用指令和其他JS庫時。但是,由于我不知道該代碼庫,因此我無法確定是否是這種情況。


查看完整回答
反對 回復 2019-10-25
?
MM們

TA貢獻1886條經驗 獲得超2個贊

$rootScope 基本上充當事件偵聽器和調度程序。


為了回答如何使用的問題,它與rootScope.$on; 結合使用。


$rootScope.$broadcast("hi");


$rootScope.$on("hi", function(){

    //do something

});

但是,將它$rootScope用作您自己的應用程序的常規事件服務是一種不好的做法,因為您很快就會陷入每個應用程序都依賴$ rootScope的情況,并且您不知道哪些組件正在偵聽哪些事件。


最佳做法是為您要收聽或廣播的每個自定義事件創建服務。


.service("hiEventService",function($rootScope) {

    this.broadcast = function() {$rootScope.$broadcast("hi")}

    this.listen = function(callback) {$rootScope.$on("hi",callback)}

})


查看完整回答
反對 回復 2019-10-25
?
冉冉說

TA貢獻1877條經驗 獲得超1個贊

$ rootScope。$ broadcast是引發所有子范圍偵聽的“全局”事件的便捷方法。您只需使用$rootScope廣播消息,因為所有后代作用域都可以偵聽該消息。


根作用域廣播事件:


$rootScope.$broadcast("myEvent");

任何子級Scope都可以偵聽該事件:


$scope.$on("myEvent",function () {console.log('my event occurred');} );

為什么我們使用$ rootScope。$ broadcast?您可以$watch用來偵聽變量更改,并在變量狀態更改時執行功能。但是,在某些情況下,您只想引發一個事件,應用程序的其他部分可以偵聽該事件,而不管作用域變量狀態如何變化。這是$broadcast有幫助的。


查看完整回答
反對 回復 2019-10-25
  • 3 回答
  • 0 關注
  • 1035 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號