0

我是新来的淘汰赛。我有一个像这样的视图模型:

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 的时间。我可以对从输入字段中离开日期部分的时间部分进行自定义绑定并使其更新模型吗?

仅显示该值,这可以正常工作,但这不会更新视图模型。

  ko.bindingHandlers.timeVal = {
    update: function (element, valueAccessor) {
        var value = valueAccessor();
        var date = moment(value());
        var strDate = date.format('HH:mm');
        $(element).val(strDate);
    }
};
4

1 回答 1

1

查看文档,您可以在 init 方法中将事件处理程序注册到元素上,并使用它来更新您的 observable。像这样的东西:

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);
    }
};
于 2013-02-28T13:50:08.250 回答