2014-12-30 31 views
12

में भाई के स्कॉप्स के बीच संचार करना क्या यह दो घटकों के बीच सही ढंग से संवाद करने का तरीका है जो भाई बहनें हैं?कोणीय

  1. Ctrl1 Ctrl1 और Ctrl2 दोनों के मूल दायरे तक ईवेंट उत्सर्जित करता है।
  2. अभिभावक स्कोप Ctrl1 से उत्सर्जित ईवेंट के लिए सुनता है, फिर एक और ईवेंट को Ctrl2 पर प्रसारित करता है।
  3. Ctrl2 ब्रॉडकास्ट ईवेंट के लिए अभिभावक स्कोप से सुनता है।

diagram

उत्तर

5

हाँ, यह मैं कैसे कोणीय में भाई स्कोप के बीच संवाद है। आम तौर पर मैं अपने सभी वंशजों को 'अप' उत्सर्जित करने के लिए Ctrl1 के बारे में सोचता हूं और घटना के बारे में सुनते हुए माता-पिता के दायरे को 'ऑन' करता हूं, माता-पिता सभी बच्चों के क्षेत्रों में 'डाउन' प्रसारित करता है। इस मामले में, ईवेंट को सुनते समय Ctrl2 को 'ऑन' पर कुछ सेट अप करना चाहिए।

एक साइड नोट के रूप में, मैंने कुछ ऐसा ही किया है जहां मैंने रूटस्कोप को केंद्रीकृत इवेंट बस के रूप में उपयोग किया है, जहां यह विभिन्न बच्चों के दायरे की घटनाओं को सुनता है और फिर कुछ कार्य या प्रसारण फिर से करता है। बच्चों के स्कोप बस रूटस्कोप को उत्सर्जित करने के लिए ज़िम्मेदार होंगे।

4

खैर - आप तकनीकी रूप से $emit की जरूरत नहीं है जब माता पिता नियंत्रकों अप करने के लिएसंवाद स्थापित करने, बच्चे का उपयोग कर सकते है। लेकिन आप की जरूरत $broadcast जब एक बच्चे के दायरे करने के लिए नीचे संवाद स्थापित करते हैं:

app.controller("parentCtrl", function($scope) { 
    $scope.testMe = function() { 
     $scope.$broadcast("done"); //transmit to ctrl2 
    } 
}); 

app.controller("childCtrl1", function($scope) { 
    $scope.testMe(); //call parent 
}); 

app.controller("childCtrl2", function($scope) { 
    $scope.$on("done", function() { 
     alert("Caught parent event"); 
    }); 
}); 
+2

क्या होगा अगर में गुंजाइश 'childCtrl1' वास्तव में एक निर्देश के दायरे को अलग किया जाता है? – core