我有一個小問題與設置下拉的初始值。下面的代碼是視圖模型定義和$(document).ready
中的初始化。我有一個名爲sourceMaterialTypes
的數組和一個表示該數組的選定值的selectedSourceMaterialType
。我正在使用(ASP.Net MVC)Model和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
視圖模型屬性的值初始化。
這應該工作得很好;檢查生成的html的源代碼,看看什麼是從''selectedSourceMaterialType:ko.observable(@ Html.Raw(Json.Encode(Model.SourceMaterialType)))''我懷疑這是一個空的參數。 – neebz
@nEEbz沒有,不爲空....'selectedSourceMaterialType:ko.observable({ 「ID」:2, 「名稱」: 「水果」, 「描述」: 「新鮮水果」, 「MeasuredIn」:1,「MeasuredInValue 「:1}),'是什麼被呈現,但是該初始選擇是在sourceMaterialTypes中的第一項....這使得如'sourceMaterialTypes:ko.observableArray([{」 ID 「:1,」 名稱 「:」咖啡豆「,」描述「:」生咖啡豆「,」MeasuredIn「:0,」MeasuredInValue「:0},{」Id「:2,」Name「:」水果「,」描述「:」Fresh果」,‘MeasuredIn’:1,‘MeasuredInValue’:1}])',(最初的選擇是‘咖啡豆’) –
我猜你需要的,而不是通過標識整個對象在selectedSourceMaterialType觀察到的功能 - >'selectedSourceMaterialType:ko.observable(2)' – neebz