मेरे पास ऑब्जेक्ट्स के observableArray
(नाम 'सभी') के साथ एक दृश्य मॉडल है। उस ऑब्जेक्ट के गुणों में से एक observable
नाम चुना गया है। जब भी सरणी में बच्चे ऑब्जेक्ट की चयनित संपत्ति बदलती है, तो मैं कुछ कोड निष्पादित करना चाहता हूं। मैंने all
पर all.subscribe()
के माध्यम से मैन्युअल रूप से सदस्यता लेने का प्रयास किया लेकिन वह कोड केवल तभी आग लग जाता है जब आइटम जोड़े या हटा दिए जाते हैं। मैंने कोड को इस तरह करने के लिए अद्यतन किया:नॉकआउट। जेएस पर्यवेक्षित ऐरे व्यक्तिगत अवलोकन करने योग्य वस्तुओं में परिवर्तन
all.subscribe(function() {
ko.utils.arrayForEach(all(), function (item) {
item.selected.subscribe(function() {
//code to fire when selected changes
});
});
});
क्या यह करने का यह सही तरीका है या कोई बेहतर तरीका है?
यदि मैं पुरानी सरणी को 'सभी ([])' से उड़ाता हूं, तो क्या वह सभी सब्सक्रिप्शन को मार देगा? उपयोगकर्ता वास्तव में इस संग्रह से सीधे बातचीत नहीं करता है, यह चेक बॉक्स के संग्रह की तरह है और गतिशील रूप से नहीं बदला गया है। – arb
फिर यह एक अवलोकन योग्य सरणी क्यों है? बस इसे एक सामान्य सरणी बनाएं जिसमें अवलोकन योग्य गुण वाली वस्तुएं हों। – Domenic
वास्तव में आपके प्रश्न का उत्तर देने के लिए हालांकि: नहीं, यह नहीं होगा। सदस्यता केवल 'subscription.dipose()' को कॉल करके निपटाई जाती है, जैसा कि http://knockoutjs.com/documentation/observables.html – Domenic