【发布时间】:2015-02-07 19:39:52
【问题描述】:
我正在像这样使用 ajax 填充下拉列表。
var getCertifications = function () {
$.getJSON("/Provider/GetCertifications", function (data) {
$.each(data, function (i, item) {
var certification_data = "<option value=" + item.CertificationID + ">" + item.Certification + "</option>";
$(certification_data).appendTo("#certification");
});
});
};
getCertifications 在 document.ready 方法中被调用。 我想根据第一个下拉列表中所选选项的值填充第二个下拉列表。所以我写了另一个函数
var getSpecializations = function () {
var value = $("#certification").val();
$.getJSON("/Provider/GetSpecializations/", { certificationID: value }, function (data) {
$.each(data, function (i, item) {
var specialization_data = "<option value=" + item.SpecializationId + ">" + item.Specialization + "</option>";
$(specialization_data).appendTo("#specialization");
});
});
}
html如图所示
<div class="form-group">
<label class="col-sm-2 control-label labelfont">Certification: </label>
<div class="col-sm-6">
<select class="form-control" id="certification",name="certification",data-bind="value: certification" >
<option value="0">Select a Certification</option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label labelfont">Specialization:</label>
<div class="col-sm-6">
<select class="form-control" id="specialization" , name="specialization" data-bind="value: specialization" >
<option value="0">Select a Specialization</option>
</select>
</div>
</div>
我的视图模型具有如图所示的可观察对象
self.certification = ko.observable("");
self.specialization = ko.observable("");
我在第一个下拉列表的 subscribe 方法中调用 getSpecializations 函数,就像这样
self.certification.subscribe(function () {
getSpecializations();
});
控制台中没有错误,但是第二个下拉列表,即;专业化下拉菜单没有填充。你们能指出我正确的方向吗?
【问题讨论】:
-
那是因为你试图推动而不是分配。这样做
self.yourarray([//data])
标签: jquery ajax knockout.js