मैं निम्न तालिकाताज़ा KnockoutJS डाटा
<table class="datatable zebra-striped">
<thead>
<tr>
<th>Name</th>
<th>Issue</th>
<th></th>
</tr>
</thead>
<tbody data-bind="foreach: Publications">
<tr>
<td><span data-bind="text: Name" /></td>
<td><span data-bind="text: IssueNumber" /></td>
<td><button type="button" class="btn" data-bind="click: $parent.DeletePublication">Delete</button></td>
</tr>
</tbody>
</table>
यहाँ viewmodel का एक टुकड़ा है:
function EditReaderViewModel() {
var self = this;
self.Publications = ko.observableArray([]);
self.OnAddPublicationSaveButtonClicked = function() {
//.. code omitted.
self.Publications.push(new Publication(publication.value, publication.label, publication.issueNumber));
};
};
}
और प्रकाशन वस्तु तालिका से आबद्ध:
function Publication(id, name, issueNumber) {
var self = this;
self.Id = id;
self.Name = name;
self.IssueNumber = issueNumber;
self.LoadedFromDatabase = false;
}
जब डेटा को तालिका में पहली बार लोड किया जाता है, और डेटाटेबल प्रारंभिकरण उदा।
$(".datatable").dataTable({ // blahh });
सब कुछ ठीक काम करता है - डेटा तालिका में भरी हुई, छंटाई और छानने काम कर रहा है, आदि
अब जब मैं viewmodel बातों में प्रकाशन सरणी के लिए एक नया आइटम जोड़ने सिर्फ अलग गिर रहा है। उदाहरण के लिए, कहें कि मूल रूप से प्रकाशन आइटम में 1 आइटम है, जब मैं कोई अन्य आइटम जोड़ता हूं, तब तक यह तालिका में तब तक दिखाई देगा जब तक कि मैं सॉर्ट करने के लिए कॉलम शीर्षक पर क्लिक नहीं करता।
ऐसा लगता है कि डेटाटेबल की अपनी आंतरिक डेटा सूची कहीं है जिसमें मैंने बनाए गए नए प्रकाशन को शामिल नहीं किया है।
क्या कोई मुझे डेटाटेबल को पुनर्निर्माण के बारे में मार्गदर्शन कर सकता है, यह ध्यान में रखते हुए कि डेटा नॉकआउटजेएस व्यूमोडेल से है?
कृपया ध्यान दें कि मैं इस बंधन प्लगइन पर ध्यान दिया है:
http://www.joshbuckley.co.uk/2011/07/knockout-js-datatable-bindings/
समस्या यह है कि जब मैं इस का उपयोग करें, मैं इस तरह के रूप त्रुटि संदेश प्राप्त होता है:
अनुरोधित अज्ञात पैरामीटर ' 0 'पंक्ति के लिए डेटा स्रोत से 0.
संपादित करें:
मैं कोड देख रहा हूं और मुझे लगता है कि मुझे समस्या दिखाई दे रही है।
if ((sData=oCol.fnGetData(oData)) === undefined)
जो बारी में कॉल:
function _fnGetObjectDataFn(mSource)
function _fnGetObjectDataFn(mSource)
में इस कोड है अब, jQuery.DataTables.js में इस समारोह function _fnGetCellData(oSettings, iRow, iCol, sSpecific)
कि समारोह में इस लाइन होती है जिसे कहा जाता है:
else
{
/* Array or flat object mapping */
return function (data) {
return data[mSource];
};
}
data
एक सरणी नहीं है, यह एक JSON ऑब्जेक्ट है जिसका अर्थ है कि उपर्युक्त कोड विफल हो जाएगा (return data[mSource];
)।
मुझे सच में यकीन नहीं है कि यहां क्या करना है।
संपादित करें - महत्वपूर्ण:
टिप्पणीकारों में से एक पर ध्यान गया है, और मैं बस की पुष्टि की है,
http://www.joshbuckley.co.uk/2011/07/knockout-js-datatable-bindings
तक पहुँचने एक ट्रोजन चेतावनी का परिणाम देगा। तो कृपया ध्यान रखें कि यह यूआरएल अब एक बड़ा नहीं है।
एक ही समस्या यहाँ। क्या आपने हल खोज लिया? –
@ पीटर - मुझे समस्या के आसपास एक रास्ता मिला, लेकिन इसमें स्क्रैच से डेटाटेबल का पुनर्निर्माण शामिल है। मूल रूप से तालिका HTML को आंशिक दृश्य में संग्रहीत किया जाता है जिसे मैं डेटा को रीफ्रेश करने के लिए हर बार फिर से लोड करता हूं। प्रत्येक रीलोड पर, फिर मैं उस तालिका पर ".dataTable()" प्लगइन को कॉल करता हूं। हाँ यह सामग्री को अपडेट करने का एक लंबा रास्ता है, लेकिन यह UI स्तर पर वास्तव में तेज़ है। कोई असली मंदी नहीं। –
एफडब्ल्यूआईडब्ल्यू - जब मैंने जोशबक्ले लिंक तक पहुंचने की कोशिश की तो मुझे कैस्पर्सकी से एक चेतावनी मिली। "दुर्भावनापूर्ण HTTP ऑब्जेक्ट ... पता चला: ट्रोजन प्रोग्राम: 'HEUR: Trojan.Script.Iframer' (संशोधन)"। चेतावनी के लिए – mg1075