У меня небольшая проблема с установкой начального значения раскрывающегося списка. Код ниже - это определение модели представления и инициализация в $(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 id="SourceMaterialTypeId"
name="SourceMaterialTypeId"
data-bind="options: sourceMaterialTypes,
optionsText: 'Name',
optionsValue : 'Id',
value: selectedSourceMaterialType"></select>
Это все работает нормально, за исключением первоначально выбранного значения в раскрывающемся списке исходных материалов (selectedSourceMaterialType
правильно привязано, поэтому, когда раскрывающийся список меняет свое значение, оно корректно обновляется, это только начальный выбор, с которым у меня возникли проблемы) , который всегда является первым элементом в массиве sourceMaterialTypes
в моей модели представления.
Мне бы хотелось, чтобы изначально выбранное значение было тем, которое инициализируется из (серверной) модели в качестве значения selectedSourceMaterialType
Просмотр свойства модели.