使用 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 中如何组合事情的基础上摇摇欲坠。