से पर्यवेक्षण योग्य मैं एक ग्रिड स्थापित करने और JSON के माध्यम से अधिक रिकॉर्ड के साथ इसे अद्यतन करने का प्रयास कर रहा हूं। इस सरल उदाहरण में मैं आवश्यक कार्यक्षमता प्राप्त करने में सक्षम हूं लेकिन मैं केवल एक JSON रिकॉर्ड को अपडेट/पुश कर सकता हूं। मैं JSON के माध्यम से एकाधिक रिकॉर्ड जोड़ने में सक्षम होना चाहूंगा? मैं इसे कैसे प्राप्त कर सकता हूं? मुझे लगता है कि मुझे लूप के लिए कुछ प्रकार का निर्माण करना पड़ सकता है और प्रत्येक JSON परिणाम को देखने योग्य को धक्का दे सकता है लेकिन मुझे उम्मीद थी कि जेकॉन के माध्यम से नॉकआउट को अपडेट/पार्सिंग का बेहतर तरीका हो सकता है?अद्यतन Knockout.js JSON
यहाँ मैं अब तक क्या हासिल किया है की एक प्रति: http://jsfiddle.net/sparkhill/crSbt/
function Users(user_id, password) {
this.user_id = ko.observable();
this.password = ko.observable();
}
var viewModel = {
users: ko.observableArray([]),
addUser: function() {
this.users.push({
user_id: "",
password: ""
});
},
addJSON: function() {
//Works Fine
var JSONdataFromServer
='{"user_id":"frances","password":"password"}';
//More than one result - wont map - Would Ideally like to map lots of records at one time
//var JSONdataFromServer ='{"user_id":"frances","password":"password"}, {"user_id":"frances","password":"password"}';
var dataFromServer = ko.utils.parseJson(JSONdataFromServer);
this.users.push(dataFromServer);
//Tried
//this.users.push(JSON.parse(JSONdataFromServer));
}
};
viewModel.users();
ko.applyBindings(viewModel);
</script>
अद्यतन इस काम करने के लिए लगता है, लेकिन मुझे आश्चर्य है कि एक अधिक कुशल तरीका है अगर उनकी?
addJSON: function() {
//Works Fine
var JSONdataFromServer
='[{"user_id":"frances","password":"password"},{"user_id":"timmy","password":"password"}]';
var results = JSON.parse(JSONdataFromServer);
var i = results.length;
for(var i = 0; i < results.length; i++){
this.users.push(results[i]);
};
की प्रक्रिया को कस्टमाइज़ कर सकते हैं, ध्यान रखें कि आपको अपने मॉडल का एक इंस्टेंस वैरिएबल बनाना पड़ सकता है यदि आप अपने पृष्ठ में कहीं भी अपने अवलोकन योग्य ऐरे को वास्तविक मॉडल के बाहर अपडेट करना चाहते हैं, उदाहरण के लिए: 'वर myModelInstance = नए ViewModel();' ' ko.utils.arrayPushAll (myModelInstance.users(), dataFromServer);' ' myModelInstance.users.pushall –
यह अभी भी संस्करण 3.1 के साथ जाने का रास्ता नहीं है? – Homer
मैं वही प्रश्न पूछता हूं जैसे होमर। संस्करण 3.1 के बाद से 'pushAll' पहले से ही KnockoutJs के मूल में है। – Samuel