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 メソッドの要素にイベント ハンドラーを登録し、それを使用してオブザーバブルを更新できます。このようなもの:

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 に答える