के साथ निर्देशों के बीच Angularjs घटना संचार मैं कोणीय घटना प्रणाली के साथ एक प्रकाशन/सदस्यता प्रणाली बनाना चाहता हूँ।प्रकाशित/सब्सक्राइब
angular.module("app",[]);
angular.module("app").directive("first", function($rootScope){
return {
template: "First Directive",
link:function(scope,element,attribute){
$rootScope.$broadcast("OnFirstDirectiveCreated", {
"message": "I'm first directive"
});
}
}
})
angular.module("app").directive("second", function($rootScope){
return {
template: "Second Directive",
link:function(scope,element,attribute){
var handler = $rootScope.$on("OnFirstDirectiveCreated",
function (event, args) {
console.log("First Directive Message: " + args.message);
});
}
}
})
अगर मैं इस तरह HTML दस्तावेज़ सेट, कोई संदेश कंसोल में नहीं दिखाई:
<div ng-app="app">
<first></first>
<second></second>
</div>
अगर मैं कंसोल पर पहले और दूसरे क्रम बदलने के लिए, संदेश wirite।
<div ng-app="app">
<second></second>
<first></first>
</div>
लेकिन मुझे पहले निर्देश या आंतरिक निर्देश की आवश्यकता है।
<div ng-app="app">
<first></first>
<second></second>
</div>
<div ng-app="app">
<first>
<second></second>
</first>
</div>
मैं दोनों $rootScope.$broadcast
और $rootScope.$emit
की कोशिश की लेकिन woeked नहीं किया।
$ टाइमआउट 0 सेकंड थोड़ा उलझन में है। अगर मेरा दूसरा निर्देश कुछ सेकेंड लोड करता है, तो क्या कोई समस्या हो सकती है? हम अन्य निर्देश लोड समय को नहीं जान सकते हैं। – barteloma
मैंने एक उत्तर अपडेट किया है, यदि आप 'देरी' पैरामीटर के बिना '$ टाइमआउट' का उपयोग करेंगे, तो डीओएम ने प्रतिपादन पूरा करने के बाद फ़ंक्शन निष्पादित किया जाएगा। – alexmac