Knockout自定义绑定的日期时间部分
问题描述:
我是Knockout的新手。我有一个像这样的Viewmodel:Knockout自定义绑定的日期时间部分
var Booking = function(data) {
var self = this;
self.BookingID = ko.observable(data.BookingID);
self.BookingCustomerOrderID = ko.observable(data.BookingCustomerOrderID);
self.BookingName = ko.observable(data.BookingName);
self.BookingTreatmentGroupID = ko.observable(data.BookingTreatmentGroupID);
self.BookingStartTime = ko.observable(data.BookingStratTime);
self.BookingEndTime = ko.observable(data.BookingEndTime);
在我的表单中,我想让用户更改StartTime和EndTime的时间。我是否可以将自定义绑定到仅从输入字段离开日期部分的时间部分,并将此更新作为模型?
只显示这个值工作正常,但这不会更新viewmodel。
ko.bindingHandlers.timeVal = {
update: function (element, valueAccessor) {
var value = valueAccessor();
var date = moment(value());
var strDate = date.format('HH:mm');
$(element).val(strDate);
}
};
答
望着documentation,您可以将事件处理程序注册到您的init方法的元素,并用它来更新您观察到的。像这样的东西:
ko.bindingHandlers.hasFocus = {
init: function(element, valueAccessor) {
$(element).change(function() {
if(this.val() != valueAccessor())
{
this.val(valueAccessor());
}
});
},
update: function(element, valueAccessor) {
var value = valueAccessor();
var date = moment(value());
var strDate = date.format('HH:mm');
$(element).val(strDate);
}
};
+0
哈哈!我完全错过了那部分。它拼出来不是它。谢谢保罗! – ekenman 2013-02-28 13:56:41
+0
轻松完成;去过也做过! – 2013-02-28 13:57:27
请问你可以添加一个小提琴。 – nav0611 2013-02-28 13:42:53
你可以试试self.BookingStartTime(strDate); **而不是** $(element).val(strDate); – nav0611 2013-02-28 13:44:25
谢谢Boss,但如果可能的话,我仍然希望viewpart中的datepart。 – ekenman 2013-02-28 13:53:21