1

使用 VS2012 的环境,ASP.NET MVC 4 项目,以及 Knockout 2.2.1(而且对这一切来说都是可悲的新事物)。

我要填充三个下拉列表,按
制造商、样式、颜色的顺序

当页面加载时,我将制造商列表从 Ajax 调用填充到 WebAPI 控制器,因为只有大约 20 个。但是,每个制造商的样式可能有 1000 个项目,所以我自然不想将这些全部发送出去直到我知道选择了哪个制造商。此外,除非绝对必要,否则我不想发送所有样式。

理想情况下,这看起来像是一个我可以输入的下拉菜单,并且在我输入三个或四个字符后会请求一个样式列表。或者,如果我不知道要查找的样式名称,我可以单击下拉按钮,它将获取该制造商的所有样式。一旦我选择了那个,我就可以去为那个制造商+风格获取几种颜色。但是,我必须选择服务器已发送的有效样式(在我选择有效样式之前不要填​​充颜色下拉列表)。

但是那个中间样式控件是我不知道该怎么做(或绑定到)的东西。或者,我应该期望在这种情况下使用不同类型的控件(或控件)。

我的 Viewmodel(目前不包含样式或颜色)

function vmManufacturer(id, name) {
    var self = this;
    self.id = ko.observable(id);
    self.name = ko.observable(name);
}

function vmItems() {
    var self = this;
    self.manufacturers = ko.observableArray([new vmManufacturer()]);
    self.selectedManufacturer = ko.observable();
    $.getJSON("/api/Manufacturer/", function (data) {
        $.each(data, function (key, val) {
            self.manufacturers.push(new vmManufacturer(val.id, val.name));
        });
    });
}

$(document).ready(function () {
    ko.applyBindings(new vmItems());
});

当前与模型关联的下拉列表很简单:

<select data-bind="options: manufacturers, value: selectedManufacturer, optionsText: 'name'"></select>

任何帮助都将不胜感激 - 对于这样一个简单的问题,我深表歉意,我只是在 JS/Knockout 中如何组合事情的基础上摇摇欲坠。

4

0 回答 0