我有一个引导datepicker小部件,非常适合Knockout:也就是说,我可以选择一个日期,并且模型被正确更新。然而,当我第一次初始化我的模型时,我似乎无法开始填充日期。
以下是我的HTML:
<div class="controls">
<input type="text" class="datepicker" data-date-format="dd-mm-yyyy" data-bind="datepicker: someDate" />
<div data-bind="text: someDate"></div>
以及相应的JavaScript:
var self = this;
$('.datepicker').datepicker();
ko.bindingHandlers.datepicker = {
init: function(element, valueAccessor, allBindingsAccessor) {
//initialize datepicker with some optional options
var options = allBindingsAccessor().datepickerOptions || {};
$(element).datepicker(options);
//when a user changes the date, update the view model
ko.utils.registerEventHandler(element, "changeDate", function(event) {
var value = valueAccessor();
if (ko.isObservable(value)) {
value(event.date);
}
});
},
update: function(element, valueAccessor) {
var widget = $(element).data("datepicker");
//when the view model is updated, update the widget
if (widget) {
widget.date = ko.utils.unwrapObservable(valueAccessor());
widget.setValue();
}
}
}; // end KO binding datepicker
function AppViewModel() {
self.someDate = ko.observable(new Date('01/01/2004'));
}
// Activates knockout.js
ko.applyBindings(new AppViewModel());和相应的JSFiddle:http://jsfiddle.net/philcms1/0mftjtk4/2/
当模型第一次绑定时,如何填充小部件?
发布于 2014-09-16 17:30:38
您可以在这里查看一个工作示例这里 (取自眼色晕船)
正如您所说,使用value: myDate解决了问题。
发布于 2014-09-16 06:02:20
value:someDate无疑是一种更明确的方式,但您也可以在init回调中调用jquery的setDate方法,如
http://jsfiddle.net/zkgp0b4b/1/
https://stackoverflow.com/questions/25859179
复制相似问题