2012-03-15 13 views
42

मेरे पास मेरे दृश्य मॉडल में observableArray है। वीएम बनाने के बाद मैं observableArray डेटा को पूरी तरह से बदलना चाहता हूं। यहाँ कैसे मैं इसे कर रहा हूँ है:Knockout.js में सभी तत्वों को प्रतिस्थापित करें अवलोकन

//Initial Setup 
var vm = {}; 
vm.roles = ko.observableArray([]); 
ko.applyBindings(vm); 


//....replace array later on.... 
vm.roles(["1", "2"]); 

यह ठीक काम कर रहा है, लेकिन अगर यह गलत था और मेमोरी लीक हो सकती है मैं चिंतित था। क्या कोई यह मान सकता है कि मौजूदा observableArray को अपडेट करने का यह पसंदीदा तरीका है कि आप अपने सभी डेटा को प्रतिस्थापित करना चाहते हैं?

मैंने देखा observableArray में removeAll() विधि है और यह सोचकर कि क्या इसे साफ करने के लिए कहा जाना चाहिए, या यदि मैं कर रहा हूं तो मैं ठीक हूं?

उत्तर

38

तकनीक जो आप उपयोग कर रहे हैं वह observableArray में डेटा को पूरी तरह से बदलने के लिए अनुशंसित दृष्टिकोण है। एक observableArray वास्तव में केवल एक सामान्य observable है जो उपयोगी सरणी संचालन के लिए अतिरिक्त कार्यों के साथ जोड़ा गया है जो अंतर्निहित सरणी पर कार्य करता है और सूचनाओं को ट्रिगर करता है।

+3

पुन: जब आप कहते हैं कि "की सिफारिश की दृष्टिकोण" में http://skeptics.stackexchange.com/ किक के सवालों का जवाब दे से मेरी प्रशिक्षण नहीं लिया था। आप के लिए प्रलेखन/संपर्क का समर्थन करता है क्या होगा तुम्हारा बयान? [निश्चित रूप से, सम्मान के साथ; आप श्री नॉकमेउट खुद हैं (ओ;] – Kristopher

-4

मुझे पता चला कि अनुशंसित दृष्टिकोण आईई 9 या उससे कम में काम नहीं करता है। इसके बजाय मैं वस्तु,

vm.roles = ko.observableArray(["1","2"]) 
+0

मुझे आश्चर्य है कि क्या यह नॉकआउट के नए संस्करणों के साथ बदल गया है ... आप किस संस्करण का उपयोग कर रहे थे? –

+14

यदि आप संपूर्ण ऑब्जेक्ट को प्रतिस्थापित करते हैं, तो पर्यवेक्षकों को अधिसूचित नहीं किया जाएगा, सही? –

संबंधित मुद्दे