मेरे पास 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 को रीफ्रेश करने के लिए बाध्य करने के लिए कॉल करने की आवश्यकता है।
यहाँ नया कार्य है खनखनाहट
धन्यवाद क्लेज, तथा जिगर प्रजापति तुम्हारी मदद के लिए।