我想我可以很容易地與jQuery UI的日曆和knockout.js感謝的日期數據綁定到this answer.淘汰賽JS用的DateTimePicker綁定給出了一個例外
現在我需要綁定一個日期數據以及它的時間。當然,我可以使用timepicker。但我不確定我如何將它的數據與knockout.js綁定。我希望這將會是類似日期選擇器所以我做了下面的腳本
ko.bindingHandlers.datetimepicker = {
init: function (element, valueAccessor, allBindingsAccessor) {
//initialize datepicker with some optional options
var options = allBindingsAccessor().datetimepickerOptions || {};
$(element).datetimepicker(options);
//handle the field changing
ko.utils.registerEventHandler(element, "change", function() {
var observable = valueAccessor();
observable($(element).datetimepicker("getDate"));//****
});
//handle disposal (if KO removes by the template binding)
ko.utils.domNodeDisposal.addDisposeCallback(element, function() {
$(element).datetimepicker("destroy");
});
},
update: function (element, valueAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor()),
current = $(element).datetimepicker("getDate");
if (value - current !== 0) {
$(element).datetimepicker("setDate", value);
}
}
};
但是,當我跑了劇本,我在javascript
TypeError: observable is not a function
的//****
線得到一個錯誤,但我不能找到我在這裏做錯了什麼。
你說得對。現在正在工作。但爲什麼相同的代碼爲datepicker工作的原因是我不明白的事情。 – 2012-08-06 21:47:15
我只是發現你的答案是錯誤的。 valueAccessor()應該給出正確的敲除觀察值。如果我使用你建議的'valueAccessor',那麼控件將永遠不會工作! – 2012-08-30 22:44:55
這個答案有一半是正確的:[文檔專門做了OP的工作](http://knockoutjs.com/documentation/custom-bindings.html#modifying-observables-after-dom-events)。但是,這取決於如何定義綁定(請參閱:http://stackoverflow.com/a/18015621)。 – 2015-04-28 14:16:22