У меня есть страница, на которой в данный момент используется свойство модели для «списка» элементов для выбора, а также свойство «selectedItems» для уже выбранных.(Это элемент множественного выбора).
Моя проблема в том, что при использовании элемента select, подобного этому:
<select name="SelectedItems" id="SelectedItems" multiple class="form-control chosen-select" data-placeholder="Select Your Items" style="width: 100%">
@foreach (var item in Model.AvailableItems)
{
var itemSelected = Model.SelectedItems.Contains(item) ? " selected " : "";
<option value="@item.ToString()" @itemSelected>@item.Humanize()</option>
}
</select>
Он предварительно выбирает соответствующие элементы и список элементов.доступно идеально.Но когда я захожу, чтобы сохранить / опубликовать, он не распознает никаких изменений, поскольку этот элемент не был включен в привязку выбивки.
Итак, когда я включаю его в привязку выбивки, например:
<select name="SelectedItems" id="SelectedItems" multiple class="form-control chosen-select" data-bind="selectedOptions: selectedItems" data-placeholder="Select Your Items" style="width: 100%">
@foreach (var item in Model.AvailableItems)
{
var itemSelected = Model.SelectedItems.Contains(item) ? " selected " : "";
<option value="@item.ToString()" @itemSelected>@item.Humanize()</option>
}
</select>
Он НЕ будет загружать уже выбранные элементы, но он УВИДЕТЬ изменения, сделанные при попытке сохранить / опубликовать.
Стоит отметить, что когда я ставлю точку останова внокаутирующий код (см. ниже), где он отображает модель представления, верно, ДО того, как он выполняет ko.applyBindings (), вы можете видеть в браузере, что он действительно правильно выбирает выбранные элементы.Затем, как только ko.applyBindings () выполнится, эти предварительно выбранные элементы исчезнут.
Вот что вылетает из раздела / тега скрипта в моем файле cshtml:
var viewModelJson = '@Html.Json(Model)';
var viewModelJs = {};
var viewModel = {};
viewModelJs = JSON.parse(viewModelJson);
initializeViewModelJs(viewModelJs);
viewModel = ko.mapping.fromJS(viewModelJs);
ko.applyBindings(viewModel);
Как мне заставить это работать как: 1) загрузка выбранных элементов и 2) просмотр изменений, внесенных в выбранные элементы?