/ / AngularJS में किसी अन्य मॉड्यूल से अपडेट किए गए मॉड्यूल से नवीनतम डेटा कैसे प्राप्त करें - angularjs

एक मॉड्यूल से नवीनतम डेटा कैसे प्राप्त करें, जिसे AngularJS - angularjs में किसी अन्य मॉड्यूल से अपडेट किया गया है

मेरे पास 3 AngularJS मॉड्यूल हैं, M होने के लिए एक मॉड्यूल आदर्श धारक/प्रबंधक, और अन्य 2 मॉड्यूल app जो मुख्य मॉड्यूल है और A जो के डेटा में हेरफेर करेगा manipulate M मापांक। दोनों app तथा A पर निर्भरता है M.

सादगी के लिए, मॉडल सिर्फ जानवरों के नामों की एक सरणी है, और मैं मॉड्यूल के भीतर से नए नाम जोड़ना चाहता हूं A जिन्हें मैं नियंत्रित सूची में प्रतिबिंबित देखने की उम्मीद करता हूं app मॉड्यूल।

इस खनखनाहट मामले को दिखाता है।

जैसा कि इसमें सुझाया गया है, मैंने मध्यस्थ पैटर्न को लागू किया है stackoverflow सवाल तो मेरा मॉडल मॉड्यूल M अपने परिवर्तनों को अपने ग्राहकों के लिए प्रकाशित करेगा।

app एक नियंत्रक है NamesListCtrl जो से डेटा पढ़ता है NamesModel से कारखाना M, और इसके आयोजन की सदस्यता लेता है NamesModelChanged जब भी आंतरिक डेटा अंदर प्रकाशित होता है NamesModel बदल गया है।

समस्या: जब अनाम कॉलबैक NamesListCtrl के लिए सदस्यता NamesModelChanged कहा जाता है (पंक्ति 87 प्लंक में), कथन $scope.data.namesList = NamesModel.getAll(); अद्यतन डेटा पुनर्प्राप्त नहीं करेगा:

NamesModel.subscribe("NamesModelChanged", function() {
console.log("OK, I will update my data");
// not getting the updated list
$scope.data.namesList = NamesModel.getAll();
});

कोई मदद?

उत्तर:

जवाब के लिए 0 № 1

उस समय जब नियंत्रक और मॉडल करेंगेप्रारंभ करें और पृष्ठ लोड हो रहा था, तो आपको $scope.data.namesList वैरिएबल को इनिशियलाइज़ करना होगा और $scope.data.namesList = NamesModel.getAll (); द्वारा एक डेटा असाइन करना होगा; , फिर जब भी आप इसे कॉल करेंगे, तो यह अद्यतन डेटा लौटाएगा, निष्कर्ष यह है कि जब आप शुरुआत में स्कोप वैरिएबल बनाते हैं तो आपको इसे रीयल टाइम लाइव ऑब्जेक्ट/वेरिएबल बनाने की आवश्यकता होती है।


जवाब के लिए 0 № 2

दो चीजें हल हो गईं:

1) द publish के भीतर से बुलाया NamesModel कारखाने में शामिल होना चाहिए list ऐसा subscribe अन्य नियंत्रकों में कॉलबैक ताजा डेटा प्राप्त करेगा, इसलिए प्रकाशित सूची नाम के कॉलबैक को मानते हुए newList, बस बुला रहा है $scope.data.namesList = newList में डेटा अपडेट करेगा NamesListCtrl.

2) तब $scope.$digest() UI को रीफ्रेश करने के लिए बाध्य करने के लिए कॉल करने की आवश्यकता है।

यहाँ नया कार्य है खनखनाहट

धन्यवाद क्लेज, तथा जिगर प्रजापति तुम्हारी मदद के लिए।