मुझे वर्तमान में यूआई रीफ्रेश करने में समस्याएं आ रही हैं जब मुझे एक आइटम के लिए सर्वर से नया डेटा मिल रहा है जो एक अवलोकन में है रैपर ऑब्जेक्ट्स का ऐरे जिसमें कई अवलोकनों का ऑब्जेक्ट होता है ।ताजा डेटा ऑब्जेक्ट के साथ नॉकआउट यूआई अपडेट नहीं कर सकता
var vm = {
....
localEdited: ko.mapping.fromJS(new ItemWrapper(defaultModelSerialised)),
selected: ko.observable(null),
editItem: function(data) {
// clone a temporary copy of data for the dialog when opening (*.localEdited on dialog)
var clonedData = ko.toJS(data);
ko.mapping.fromJS(clonedData, null, this.localEdited);
// selected should now point to the item in the obserable array which will be refreshed
this.selected(data);
// open dialog...
},
submitDialog: function(data) {
// submit data to server...
// (1) commit the data back to UI (new item is return in resp.entity from server)
vm.selected(new ItemWrapper(resp.entity));
// at this point the UI isn't showing the updated value
// (2) however if I do this it reflects the data change in the UI
this.selected().Name("changed"); // updates the UI.
}
कोई व्याख्या कर सकते हैं क्यों vm.selected जबकि में (2) यह काम करता है यूआई अद्यतन करने नहीं है में ItemWrapper में गुजर:
निम्नलिखित पर विचार करें। मैं प्रत्येक संपत्ति के लिए (2) में प्रत्येक संपत्ति को सेट अप नहीं करना चाहता हूं।
ItemWrapper तो दिखाई देता है:
function PoolWrapper(pool) {
this.Name = ko.observable(pool.Name);
// more properties...
}
क्या आप एचटीएमएल में vm.selected के लिए कुछ भी बांधते हैं? यदि नहीं, तो आप इस लाइन में यूआई को अपडेट करने की उम्मीद क्यों करते हैं vm.selected (नया ItemWrapper (resp.entity)); ? –
शायद आप जेएसफ़िल्ड में कुछ दिखाने के लिए कुछ प्राप्त कर सकते हैं? आसान होगा कि आपके कोड का हिस्सा देख रहे हों। मुझे लगता है कि हो सकता है कि आप अपने यूआई में 'चयनित' कर रहे हैं या 'चयनित' के खिलाफ टेम्पलेट का उपयोग कर रहे हैं? –
@RomanBataev: कुछ भी नहीं है vm.selected सीधे। एडिटम() में पास किया गया डेटा अवलोकन योग्य में आइटमवापर से है। चयनित चर फिर सरणी में आइटम को इंगित करता है। बिंदु (2) के रूप में दर्शाता है कि यह अलग-अलग गुणों को पार करते समय यूआई के लिए बाध्य है, लेकिन जब आइटम (यारिएबल) में आइटमवापर को पास नहीं किया जाता है। – jaffa