我有一个淘汰赛观察站,其中包含日期和时间。那个observable绑定了kendoDateTime选择器。我无法绑定选择器中的可观察值。 以下是相同的jsfiddle链接:http://jsfiddle.net/ye865/74/
JS代码:
function ViewModel() {
var self = this;
self.bigday = ko.observable("1997-07-16T19:20:30");
}
ko.applyBindings(new ViewModel());
HTML code:
<span data-bind="text: bigday"></span>
<input data-bind="kendoDateTimePicker: { value: bigday, format: 'yyyy-MM-dd hh:mm' }" />
可观察的值:&#34; 1997-07-16T19:20:30&#34; 应绑定到dateTimePicker。
任何人都可以帮我吗?
感谢。
答案 0 :(得分:1)
您的格式字符串不正确:您错过了T
且小时数应为HH
:
format: 'yyyy-MM-ddTHH:mm'
但你可能想把它放在parseFormats
选项中,所以显示器没有T:
<input id="text" data-bind="kendoDateTimePicker: { value: bigday,
format: 'yyyy-MM-dd HH:mm', parseFormats: ['yyyy-MM-ddTHH:mm']}" />
演示JSFiddle。
要在一个observable中以格式化方式选择一个日期,你需要有一个单独的observable,因为日期选择器的value
属性返回一个Date
对象,你需要手动格式化它一个字符串,例如使用computed
:
function ViewModel() {
var self = this;
self.bigday = ko.observable("1997-07-16T19:20:30");
self.formatted = ko.computed(function() {
return kendo.toString(self.bigday(), 'yyyy-MM-dd HH:mm');
});
}
演示JSFiddle。
您甚至可以将格式化的值反馈到原始bigday
:
self.bigday = ko.observable("1997-07-16T19:20:30");
self.bigday.subscribe(function() {
self.bigday(kendo.toString(self.bigday(), 'yyyy-MM-dd HH:mm'));
});
演示JSFddle。