我遇到了将所选选项绑定到下拉列表的问题
这是我的代码:
@Html.SelectListFor(m => m.State,
new { data_bind = "options: availableStates, optionsText: 'Name',
optionsValue: 'Id', selectedOptions: selectedStates
})
在我的页面加载中,我想在此下拉列表中设置我的选项,因此我有以下的淘汰代码:
$.ajax({
url: rootDir + "/Home/GetStates",
type: "GET",
contentType: "application/json",
success: function (data) {
var jsonResult1 = JSON.parse(data);
data1 = jsonResult1;
for (key in jsonResult1) {
var item = {
Id: jsonResult1[key].Id,
Name: jsonResult1[key].Name
};
self.availableStates.push(item);
}
}
});
self.selectedStates = ko.observableArray(vmData.State || "");
//vmData.State has the previous selected values from the db
我的问题是当我调试上面的代码时,上面的ajax调用在最后执行,而selectedStates语句在之前执行。由于之后执行了ajax调用,因此下拉列表为空,并且下拉列表中没有设置任何内容。
我可以直接将上面的ajax代码放在我的knockout js文件中并加载可用状态的可观察数组吗?
答案 0 :(得分:0)
您可以在viewmodel中创建一个公共方法,该方法处理ajax-call并推送到availableStates observable。实例化VM时,可以在applyBindings之前调用此方法。
编辑:可能错字但仍然:
{{1}}
数据绑定不是data_bind