针对Timepart of date的Knockout Custom绑定

时间:2013-02-28 13:37:35

标签: javascript knockout.js

我是Knockout的新手。我有一个像这样的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);

在我的表单中,我想让用户更改StartTime和EndTime的时间。我是否可以自定义绑定到输入字段中的datepart的时间部分并将此更新作为模型?

要显示此值正常,但这不会更新视图模型。

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

1 个答案:

答案 0 :(得分:1)

查看documentation,您可以在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);
    }
};