के माध्यम से Knockoutjs साथ SlickGrid अपडेट कर रहा है मैं उदाहरण http://jsfiddle.net/rniemeyer/A9NrP/dependentObservable
मैं ग्रिड populating और जोड़ें बटन उदाहरण के अनुसार काम कर रहा है के आधार पर knockout.js साथ SlickGrid उपयोग कर रहा हूँ। मेरी समस्या यह है कि जब मैं अपने व्यूमोडेल की पंक्तियों को अद्यतन करता हूं तो ko.dependentObservable ko.bindingHandlers के 'अपडेट' सेक्शन को निकाल दिया जाता है लेकिन स्लिम ग्रिड परिवर्तन नहीं उठाता है।
एचटीएमएल कि बाध्यकारी परिभाषित करता है:
<div id="grid" data-bind="slickGrid: { data: rows, columns: columns }"></div>
SlickGrid कोड (इसी उदाहरण के रूप में):
var grid;
ko.bindingHandlers.slickGrid = {
init: function (element, valueAccessor) {
var settings = valueAccessor();
var data = ko.utils.unwrapObservable(settings.data);
var columns = ko.utils.unwrapObservable(settings.columns);
var options = ko.utils.unwrapObservable(settings.options) || {};
grid = new Slick.Grid(element, data, columns, options);
},
update: function (element, valueAccessor, allBindingAccessor, viewModel) {
var settings = valueAccessor();
// I can see the correct data here but the grid does not update
var data = ko.utils.unwrapObservable(settings.data);
grid.render();
}
}
अपने मॉडल:
myViewModel = {
data : ko.observableArray(),
tabs: ['High', 'Medium', 'Low'],
rows : ko.observableArray([]),
columns : [
{
id: "id",
name: "ID",
field: "id"
},
{
id: "Location",
name: "Location",
field: "Location"
},
{
id: "Comment",
name: "Comment",
field: "Comment"
}
],
addItem: function() { // this works and SlickGrid adds a new row
this.rows.push(new ModelRow(0, "New", 5.00));
},
}
कोड जो AJAX सी बनाते हैं सभी, और आग ko.bindingHandlers.slickGrid.update लेकिन slickgrid does not के परिवर्तन को लेने के लिए लगता है, ajax मान्य डेटा वापस करता है, और जब एक लिंक पर उपयोगकर्ता क्लिक निकाल दिया जाता है:
ko.dependentObservable(function() {
if (this.data.lastAlarmRequest) this.data.lastAlarmRequest.abort();
this.data.lastAlarmRequest = $.get("/audit/alarmsdata/high", null, this.rows);
}, i2owater.viewmodels.AlarmsForViewModel);
क्यों addItem करता है फ़ंक्शन काम लेकिन ko.bindingHandlers.slickGrid.update नहीं? अद्यतन फ़ंक्शन में मैं सही डेटा देख सकता हूं कि ग्रिड को बाध्य होना चाहिए। क्या ऐसा इसलिए है क्योंकि पंक्तियों में सभी डेटा propertys अधिलेखित है?
अद्यतन: मैंने grid.invalidate() का उपयोग करने का प्रयास किया है; लेकिन यह does not काम है और यह भी देखा है कि addItem समारोह बंद हो जाता है वर्किंग एक बार ko.dependentObservable
क्या आपने कभी इस समस्या को हल किया है? मुझे एक ही समस्या है –
हाय डैनी, मुझे डर है कि मैंने अभी तक इसे ठीक नहीं किया है, मुझे केओ बाइंडिंग का उपयोग करना बंद करना पड़ा और स्लीगग्रिड्स डेटाव्यू ऑब्जेक्ट के साथ jquery का उपयोग करना पड़ा, मैं इस पर वापस आना चाहता हूं और काम करना चाहता हूं केओ के साथ बस यह नहीं कह सकता कि मैं इसके आसपास कब जाऊंगा। अगर आप मुझसे ज्यादा कुछ करते हैं तो कृपया मुझे बताएं। – Dave