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 回答