2016-02-04 78 views
2

我知道$ emit和$ broadcast之間的區別,但我想知道將這兩者結合是一種好的做法,而將來的層次結構可能更復雜?

考慮以下情況:

  • 我有兩個鄰居的意見(讓我們稱之爲Child1,CHILD2)主視圖(Parent1)內,我想這兩個鄰國之間傳遞的事件。
  • 未來,Child1,Child2的觀點可能有未來的父母。

在我的以下示例中,我將「喚醒」字符串從Child1傳遞給Child2(而Parent1是傳遞此數據的人)。 步步什麼技術上發生了:

  1. Child1發送 '喚醒'($發出)
  2. Parent1抓($上)這一事件,並傳送到孩子2($廣播)
  3. CHILD2是通知($上)

代碼:

function ControllerParent1($scope) { 
    $scope.$on('myEmit', function(event, args) { 
     $scope.$broadcast('myBroadcast', args.message); //Step2 
    }; 
} 

function ControllerChild1($scope) { 
    $scope.$on('myEmit', function(event, args) { 
     $scope.$emit('send', {message: 'wake up'}); //Step1 
    });   
} 

function ControllerChild2($scope) { 
    $scope.$on('myBroadcast', function(event, args) { 
     $scope.message = args.message; //Step3 
    }); 
} 

現在這種感覺對我來說非常技術性的,我不知道大約T t他的做法是否是角度工作的正確方式?未來可能會更復雜。

+0

我覺得你應該想想'$ rootScope $ emit'&'$ rootScope $ on'將傳播事件。僅限於'$ rootScope' ..有關性能優化的更多詳細信息,我強烈建議您閱讀[本文](http://www.bennadel.com/blog/2807-using-rootscope-emit-as-一個性能優化功能於angularjs.htm) –

回答

相關問題