0

ドロップダウンの選択に基づいて日付を表示できるようにしたい。ドロップダウンはMVC3のViewModelから入力され、ページの読み込み時にJsonとしてシリアル化されます。

サブスクライブや変更などを無駄に試してみました。以下のjsfiddleリンクで単位を選択すると、右側のテキストボックスにデフォルト値としてイベント日付が入力されます。ユーザーはそれを変更できます。その情報は、unitDropDown監視可能配列にあります。他の例で見られるように、私はおそらく密集していて、私にとっては、いわばクリックしません。

addEvent observableにイベントを追加する必要があると思いますか?次に、ドロップダウンをサブスクライブするように設定しますか?

addEvent: function() {
    this.phaseUnits.push(new PhaseUnitModel('0', '1', '0', 'N', '')); // defaults
}

これがjsFiddleでの実際の例です:http://jsfiddle.net/robcube/eFAmu/

更新(修正):

function PhaseUnitModel(Id, PhaseDetailId, UnitId, eventType, eventDate, deleteFlag) {
        var self = this;
        self.Id = ko.observable(Id);
        self.PhaseDetailId = ko.observable(PhaseDetailId);
        self.UnitId = ko.observable(UnitId);
        self.eventType = ko.observable(eventType);
        self.eventDate = ko.observable(eventDate);
        self.deleteFlag = ko.observable(deleteFlag);
        self.markForDeleteText = ko.observable();

        self.UnitId.subscribe(function(newValue) {
            for (i in unitDropDown) {
                if (unitDropDown[i].Id == newValue)
                    self.eventDate(unitDropDown[i].OnlineDate);
            }
        }.bind(this));
    }
4

1 に答える 1

1

これはあなたが探しているものですか?

function PhaseUnitModel(Id, PhaseDetailId, UnitId, eventType, eventDate, deleteFlag) {
    this.Id = ko.observable(Id);
    this.PhaseDetailId = ko.observable(PhaseDetailId);
    this.UnitId = ko.observable(UnitId);
    this.eventType = ko.observable(eventType);
    this.eventDate = ko.observable(eventDate);
    this.deleteFlag = ko.observable(deleteFlag);
    this.markForDeleteText = ko.observable();

    this.UnitId.subscribe(function(newValue) {
        for (i in unitDropDown) {
            if (unitDropDown[i].Id == newValue)
                this.eventDate(unitDropDown[i].OnlineDate);
        }
    }.bind(this));
}
于 2012-07-03T17:48:12.840 に答える