绑定下拉列表(select)的初始/默认值

9 浏览
0 Comments

绑定下拉列表(select)的初始/默认值

我在设置下拉列表的初始值时遇到了一个小问题。下面是视图模型的定义和在$(document).ready中的初始化代码。我有一个名为sourceMaterialTypes的数组和一个表示该数组选定值的selectedSourceMaterialType。我正在使用(ASP.Net MVC)模型和ViewBag的值来初始化视图模型。

var viewModel = {
    sourceMaterialTypes : 
        ko.observableArray(@Html.Raw(Json.Encode(ViewBag.SourceMaterialTypes))),
    selectedSourceMaterialType :
        ko.observable(@Html.Raw(Json.Encode(Model.SourceMaterialType))),
    ingredientTypes :
        ko.observableArray(@Html.Raw(Json.Encode(ViewBag.IngredientTypes))),
    selectedIngredientType : ko.observable()
};
$(document).ready(function () {
    ko.applyBindings(viewModel);
    viewModel.selectedSourceMaterialType.subscribe(function(newSourceMaterialType) {
        $.getJSON("/IngredientType/FindByMaterialType",
                  { "id": newSourceMaterialType })
            .success(function (data) {
                viewModel.ingredientTypes($.parseJSON(data));
            })
            .error(function () { alert("error"); });
    });
});

以下是使用Knockout绑定定义的下拉列表(select)的定义。


这一切都运行良好,除了源材料下拉列表的初始选定值(selectedSourceMaterialType绑定正确,所以当下拉列表的选择改变时,它的值会正确更新,只是初始选择我遇到了问题),它始终是视图模型中sourceMaterialTypes数组的第一项。

我希望初始选定值是从(服务器端)模型初始化的selectedSourceMaterialType视图模型属性的值。

0