0
我使用該解決方案在這裏找到:一個火災所有jQuery UI的DatePicker的和KnockoutJS更改事件的所有
jQuery UI datepicker change event not caught by KnockoutJS
我有一些頁面上的日期選擇控件。當一個人改變時,改變事件就會觸發他們。
RefreshData是一個自定義函數,用於在日期範圍更改時刷新ViewModel中的數據。
我缺少的是 - 它是一個非常令人沮喪的下午試圖讓這個工作正常
這裏是我的淘汰賽結合:
ko.bindingHandlers.datepicker = {
init: function (element, valueAccessor, allBindingsAccessor) {
var options = allBindingsAccessor().datepickerOptions || {};
$(element).datepicker(options);
ko.utils.registerEventHandler(element, "change", function() {
var observable = valueAccessor();
observable($(element).datepicker("getDate"));
});
ko.utils.domNodeDisposal.addDisposeCallback(element, function() {
$(element).datepicker("destroy");
});
},
update: function (element, valueAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor());
var current = $(element).datepicker("getDate");
if (value - current !== 0) {
$(element).datepicker("setDate", value);
}
RefreshData(element.id); //Should only fire once, but is firing for every datepicker on the page
}
};
你可以把一個jsfiddle再現你的問題? – nemesv
剛剛看到一些有趣的事情 - 當第一個數據更改發生時,更新一次。當第二個日期選擇器被更改時,更新觸發兩次 –
爲什麼你需要'RefreshData'?你能提供這個功能的身體嗎? –