के साथ AJAX कॉल के बाद ताज़ा सूची में मेरे पास एक पृष्ठ पर अनुलग्नकों की एक सूची है जो jQuery $.ajax
कॉल और नॉकआउट जेएस का उपयोग करके जेनरेट की गई है।नॉकआउट जेएस
मेरे एचटीएमएल की तरह लग रहा है (यह वापस छीन लिया जाता है):
$(function() {
getFormAttachments();
});
function getAttachments() {
var request = $.ajax({
type: "GET",
datatype: "json",
url: "/Attachment/GetAttachments"
});
request.done(function (response) {
ko.applyBindings(new vm(response));
});
}
मेरा विचार मॉडल:
<tbody data-bind="foreach: attachments">
<tr>
<td data-bind="text: Filename" />
</tr>
</tbody>
मैं एक समारोह है कि संलग्नक जो एक JSON प्रतिक्रिया के रूप में दिया जाता है की सूची हो जाता है ऐसा लगता है:
function vm(response) {
this.attachments = ko.observableArray(response);
};
एक ताज़ा बटन है जिसका उपयोग इस सूची को रीफ्रेश करने के लिए क्लिक कर सकता है क्योंकि से अधिक समय संलग्नक जोड़े गए हो सकते/हटाया:
$(function() {
$("#refresh").on("click", getAttachments);
});
अनुलग्नकों की सूची के प्रारंभिक प्रतिपादन, ठीक है, लेकिन जब मैं ताज़ा करें बटन के माध्यम से फिर से getAttachments
फोन क्लिक करें सूची में जोड़ा जाता (वास्तव में प्रत्येक आइटम है कई बार डुप्लिकेट)।
मैं यहाँ इस समस्या को प्रदर्शित करने के लिए एक jsFiddle बना लिया है:
क्या मैं गलत कर रहा हूँ?
केवी - अच्छी पोस्ट। मैं अभी भी थोड़ा उलझन में हूँ। नॉकआउट के लिए नया। मुझे पृष्ठ लोड पर AJAX डेटा के साथ एक व्यूमोडेल लोड करने में समान समस्याएं आ रही हैं। मुझे यकीन है कि मैं एक छोटा लेकिन गंभीर बिंदु खो रहा हूँ। एक बात जो मुझे भ्रमित करती है वह कुछ ट्यूटोरियल एक ऑब्जेक्ट के रूप में 'व्यूमोडेल' दिखाता है (उदा। 'var viewmodel = {something: ko.observable()} ') और अन्य फ़ंक्शन के रूप में (उदा।' फ़ंक्शन व्यूमोडेल() {this.something = को।देखने योग्य()} ') - कोई सुझाव? –
@ one.beat.consumer - मेरा अनुवर्ती प्रश्न देखें: http://stackoverflow.com/questions/9589419/difference-between-knockout-view-models-declared-as-object-literals-vs- कार्यक्षमताओं - उत्तर और नीचे दी गई टिप्पणियों को चीजों को स्पष्ट करना चाहिए। मैं $ 25 खर्च करने और इसे देखने की अनुशंसा करता हूं: http://www.pluralsight-training.net/microsoft/Courses/TableOfContents?courseName=knockout-mvvm – Kev
मैं आपका अन्य प्रश्न देखेंगे; धन्यवाद। मेरे पास एक बहुमूल्य सदस्यता है और मैंने इसे 2-3 बार देखा है ... वे मुश्किल से सतह को खरोंच करते हैं और इसमें से अधिकांश पुराना है कि 2.0 बाहर है, वे 1.2 या 1.3 बीटा का उपयोग कर रहे थे ... –