मेरे पास पृष्ठ पर एक ग्रिड और एक चयन नियंत्रण है। किसी भी चयन मूल्य का चयन ग्रिड अद्यतन ट्रिगर्स। यह अद्यतन गणना का उपयोग कर किया जाता है। क्या मैं ग्रिड में एक नया मान जोड़ा जाता है, स्थिति में अद्यतन करने के लिए मैन्युअल रूप से ग्रिड ट्रिगर कर सकता हूं?Knockout.js: मैन्युअल रूप से गणना
function vm(){
var self = this;
self.items = ko.observableArray([]);
self.chosen_category = ko.observable("");
self.pager = {
page_namber : ko.observable(1),
page_size : ko.observable(10)
};
self.sort = {
field : ko.observable('name'),
dist : ko.observable('asc')
};
// etc.
self.fetch = ko.computed(function(){
$.ajax({
url: '/api/items/',
type: 'GET',
data: ko.toJSON(self),
contentType: 'application/json',
success: self.items
});
}, self);
self.add_item = function() {
//here I want to update the grid
self.fetch(); // not work
};
}
निश्चित रूप से मैं इसे एक अलग समारोह में ले जा सकता हूं लेकिन मैं एक क्लीनर समाधान की तलाश में हूं। धन्यवाद!
काम कर संस्करण:
function vm() {
var self = this;
self.items = ko.observableArray([]);
self.chosen_category = ko.observable("test");
self.pager = {
page: ko.observable(1),
size: ko.observable(10)
};
self.sort = {
field: ko.observable('name'),
dist: ko.observable('asc')
};
self.fetch = function() {
var data = {
category: self.chosen_category(),
pager: ko.toJS(self.pager),
sort: ko.toJS(self.sort)
};
$.ajax({
url: '/api/items/',
type: 'POST',
data: ko.toJSON(data),
contentType: 'application/json',
success: self.items
});
};
self._auto_update = ko.computed(self.fetch).extend({ throttle: 1 }); ;
self.add_item = function() {
self.fetch();
};
}
आप इसे मैन्युअल रूप से अद्यतन करने की आवश्यकता न:
इसके अलावा, आप अभिकलन साथ भी ऐसा ही कर सकते हैं: उस मामले में आप दोनों सदस्यता और मैनुअल कॉल के लिए उपयोग करने के लिए समारोह लाने परिभाषित कर सकते हैं observableArray। लेकिन मुझे यकीन नहीं है कि आप गणना किए गए अवलोकनों का उपयोग कर रहे हैं – Anders
मुझे लगता है कि नॉकऑट का विचार यह है कि आप चीजों को देखने योग्य बनाते हैं, इसे स्वयं ट्रिगर नहीं करते हैं। संग्रह के परिवर्तन से fetch विधि स्वचालित रूप से लागू किया जाना चाहिए। मैं खोज रहा हूं कि, क्या आपके पास एक और पूर्ण उदाहरण है? – EricG