Twitter bootstrap 如何在Durandal框架内将引导数据采集器与敲除绑定
我不想把这件事扯进去 因此,我尝试使用JSFIDLE,但在Durandal框架中,我将main.js配置为require绑定(请注意可观察的:true): 我使用复合绑定处理程序设置了bindings.js,如下所示:Twitter bootstrap 如何在Durandal框架内将引导数据采集器与敲除绑定,twitter-bootstrap,knockout.js,datepicker,durandal,Twitter Bootstrap,Knockout.js,Datepicker,Durandal,我不想把这件事扯进去 因此,我尝试使用JSFIDLE,但在Durandal框架中,我将main.js配置为require绑定(请注意可观察的:true): 我使用复合绑定处理程序设置了bindings.js,如下所示: composition.addBindingHandler('datePicker', { init: function (element, valueAccessor, allBindingsAccessor, viewModel) { var unw
composition.addBindingHandler('datePicker', {
init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
var unwrap = ko.utils.unwrapObservable;
var dataSource = valueAccessor();
var binding = allBindingsAccessor();
var options = {
keyboardNavigation: true,
todayHighlight: true,
autoclose: true,
format: 'mm/dd/yyyy'
};
if (binding.datePickerOptions) {
options = $.extend(options, binding.datePickerOptions);
}
$(element).datepicker(options);
$(element).datepicker('update', dataSource);
$(element).on("changeDate", function (ev) {
var observable = valueAccessor();
if ($(element).is(':focus')) {
// Don't update while the user is in the field...
// Instead, handle focus loss
$(element).one('blur', function (ev) {
var dateVal = $(element).datepicker("getDate");
observable(dateVal);
});
}
else {
observable(ev.date);
}
});
//handle removing an element from the dom
ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
$(element).datepicker('remove');
});
},
update: function (element, valueAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor());
$(element).datepicker('update', value);
}
});
虽然这在JSFIDLE中有效,但在Durandal框架中使用代码时会抛出一个错误
视图出现,我可以使用datepicker,但它在以下行中抛出错误:
observable(dateVal);
有人知道如何利用Durandal的观测值来实现这一点吗?你能发布你的提琴吗?不幸的是,我没有提琴。如果你看我文章中的链接,你会看到一个指向我复制的小提琴的链接,但我无法让它在Durandal框架内工作,正如我试图在上面解释的那样。你在调试器中得到了什么反馈?您使用的是什么版本的Durandal?我的第一条攻击线可能是将observable插件设置为
false
,并使用标准的击倒观察值来尝试这一点。另外,我还需要更多地了解您是如何在Durandal中实现这一点的。Durandal默认情况下使用敲除进行数据绑定,那么,您使用插件有什么特别的原因吗?Brett,Eric——谢谢你的回答,但我还没有深入了解Durandal,但据我所知,这被认为是设置可观察性的最佳实践:确实如此,Durandal启动了所有事情的getter/setter,但我不想偏离正轨。有人有使用Durandal框架和日期选择器的工作示例吗?
observable(dateVal);