Javascript 取消日期时间部分的自定义绑定

Javascript 取消日期时间部分的自定义绑定,javascript,knockout.js,Javascript,Knockout.js,我是个新手。我有这样一个Viewmodel: var Booking = function(data) { var self = this; self.BookingID = ko.observable(data.BookingID); self.BookingCustomerOrderID = ko.observable(data.BookingCustomerOrderID); self.BookingName = ko.observable(data.Bo

我是个新手。我有这样一个Viewmodel:

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);
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);
    }
};
在我的表单中,我想让用户更改开始时间和结束时间。我是否可以对从输入字段离开datepart的时间部分进行自定义绑定,并对模型进行更新

仅显示该值可以正常工作,但不会更新viewmodel

  ko.bindingHandlers.timeVal = {
    update: function (element, valueAccessor) {
        var value = valueAccessor();
        var date = moment(value());
        var strDate = date.format('HH:mm');
        $(element).val(strDate);
    }
};
查看,您可以在init方法中的元素上注册一个事件处理程序,并使用它来更新您的可观察对象。大概是这样的:

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);
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);
    }
};

你能帮我加一把小提琴吗?你能自己试试吗;而不是$(元素).val(标准日期);谢谢老板,但如果可能的话,我仍然希望在viewmodel中使用datepart。哈哈!我完全错过了那部分。很清楚,不是吗。谢谢你,保罗!