2012-01-14 24 views
8

अद्यतन नहीं करता है मैं को 2.0 में कंटेनर रहित प्रवाह नियंत्रण का उपयोग कर रहा हूं। जब मैं अपने अवलोकन में कोई आइटम अपडेट करता हूं तो यह UI को अपडेट नहीं कर रहा है। मैं इस तरह सरणी को अद्यतन करने हूँ:एक अवलोकन योग्य अद्यतन करना यूआई

this.editFormHost = function (formHost) { 
    ... 
    formHost.HostName = newHostName; 
    this.formHosts[index] = formHost; 
} 

मैं इसे अपडेट नहीं करता सूचकांक द्वारा सरणी को अद्यतन करने ko में कुछ भी फोन नहीं करता है क्योंकि सोच रहा हूँ। the documentation को देखने से ऐसा लगता है कि किसी ऑब्जेक्ट को अपडेट करने के लिए कोई तरीका नहीं है जो यूआई को बदले में बदल देगा। या वहाँ है?

+0

एक मुश्किल सा अपने viewmodel देखकर, और समझ तुम क्या करने की कोशिश कर रहे हैं जो बिना मदद करने के लिए। प्रारंभ बिंदु के रूप में, क्या आपने यह प्रश्न देखा है http://stackoverflow.com/questions/8774943/knockoutjs-observablearray-to-update-when-inner-observable-is-changed और यह http://stackoverflow.com/questions/6425409/कैसे-प्रतिस्थापन-एक-दिए गए-अनुक्रमणिका-तत्व-इन-नॉकआउटज? – saurus

उत्तर

15

यहां एक पहेली है जो दर्शाती है कि एक आइटम को एक अवलोकन में कैसे बदलना है और इसके परिवर्तन यूआई को सूचित करते हैं।

http://jsfiddle.net/johnpapa/ckMJE/

कुंजी यहाँ observableArray पर बदलने के कार्य है। आप स्प्लिस का भी उपयोग कर सकते हैं।

... सूचना के उपयोग "की जगह" नीचे ...

var ViewModel = function() { 
    this.self = this; 
    self.index = ko.observable(0); // default 
    self.newColor = ko.observable("purple"); // default 
    self.colors = ko.observableArray([{ 
     color: 'red'}, 
    { 
     color: 'blue'}, 
    { 
     color: 'yellow'}]); 
    self.replaceIt = function() { 
     self.colors.replace(self.colors()[self.index()], { 
      color: self.newColor() 
     }); 
    }; 
}; 
ko.applyBindings(new ViewModel()); 
+5

किसी को दस्तावेज़ को प्रतिस्थापित करने के लिए उस विधि को जोड़ना चाहिए। महान काम किया, धन्यवाद! –

+1

अच्छा बिंदु। मैंने इसे अपने नॉकआउट कोर्स में जोड़ा है क्योंकि मुझे इसके बारे में बहुत कुछ पूछना है। –

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