페이지에 그리드와 선택 컨트롤이 있습니다. 선택 값을 선택하면 그리드 업데이트가 트리거됩니다. 그 업데이트는 계산을 사용하여 수행됩니다. 새로운 값이 그리드에 추가 될 때 수동으로 그리드를 트리거하여 업데이트 할 수 있습니까?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
KnockOut은 관측 대상을 관측 가능하게 만들고 자신을 트리거하지 않는다고 생각합니다. fetch 메소드는 콜렉션 변경에 의해 자동으로 호출되어야합니다. 나는 어떻게 찾고 있는데, 당신은 더 완전한 모범을 보았습니까? – EricG