Twitter bootstrap 用敲除填充引导数据采集器
我有一个bootstrap datepicker小部件,可以很好地处理Knockout:也就是说,我可以选择一个日期,并且模型可以正确地更新。然而,当我第一次初始化我的模型时,我似乎无法最初填充日期 这是我的HTML:Twitter bootstrap 用敲除填充引导数据采集器,twitter-bootstrap,knockout.js,bootstrap-datepicker,Twitter Bootstrap,Knockout.js,Bootstrap Datepicker,我有一个bootstrap datepicker小部件,可以很好地处理Knockout:也就是说,我可以选择一个日期,并且模型可以正确地更新。然而,当我第一次初始化我的模型时,我似乎无法最初填充日期 这是我的HTML: <div class="controls"> <input type="text" class="datepicker" data-date-format="dd-mm-yyyy" data-bind="datepicker: someDate" /> &
<div class="controls">
<input type="text" class="datepicker" data-date-format="dd-mm-yyyy" data-bind="datepicker: someDate" />
<div data-bind="text: someDate"></div>
以及相应的JSFIDLE:
如何在第一次绑定模型时填充小部件?
value:someDate
无疑是一种更明确的方法,但您也可以在init回调中调用jquery datepicker的setDate方法,如中所示
您可以在此处检查工作样本(取自)
正如您所说,使用
value:myDate
解决了您的问题。您可以在此处查看工作样本(取自),谢谢!我在绑定中添加了值:someDate
。如果你把它作为一个答案贴出来,我会接受的。还有什么问题吗?我也在尝试更新可观察的,用一个超时来模拟延迟。它正在更新模型,但不是小部件:。知道为什么吗?我不知道你的代码出了什么问题,但它与日期选择器的工作方式有关,而不是击倒。这是一个版本,它以与init函数相同的方式设置日期
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());