Bir açılır menünün başlangıç değerini belirleyerek küçük bir sorun yaşıyorum. Aşağıdaki kod, $(document).ready
numaralı görünüm modelinin tanımı ve başlatılmasıdır. Bu dizinin seçili değerini temsil eden sourceMaterialTypes
ve selectedSourceMaterialType
adında bir dizim var. Görünüm modelini (ASP.Net MVC) Model ve ViewBag değerleriyle başlatıyorum. AşağıdakiBaşlangıç / varsayılan değeri açılır listesinin bağlanması (seçenek)
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"); });
});
});
benim açılır (seç) Nakavt bağlayıcı tanımıyla listenin tanımıdır.
<select id="SourceMaterialTypeId"
name="SourceMaterialTypeId"
data-bind="options: sourceMaterialTypes,
optionsText: 'Name',
optionsValue : 'Id',
value: selectedSourceMaterialType"></select>
Bu, tüm (selectedSourceMaterialType
doğru bağlıdır açılan seçim değeri doğru güncellenir değiştiğinde bu yüzden, ben bir sorun yaşıyorum sadece ilk seçim olan kaynak malzemeleri açılan başlangıçta seçilen değerin dışında çalışıyor ile), her zaman görünüm modelimde sourceMaterialTypes
dizisindeki ilk öğedir.
Başlangıçta seçilen değerin, (sunucu tarafı) modelinden selectedSourceMaterialType
görünüm modeli özelliğinin değeri olarak başlatılan değer olmasını isterim.
bu iyi çalışıyor olmalı; oluşturulan html kaynağını kontrol edin ve> 'selectedSourceMaterialType: ko.observable (@ Html.Raw (Json.Encode (Model.SourceMaterialType))) 'dan neyin oluşturulduğunu görün boş bir parametre olduğundan şüpheleniyorum. – neebz
@nEEbz hayır, boş değil .... 'selectedSourceMaterialType: ko.observable ({" Id ": 2," Name ":" Fruit "," Açıklama ":" Fresh Fruit "," MeasuredIn ": 1," MeasuredInValue ": 1}),' ne işlenir, ancak ilk seçim sourceMaterialTypes içinde sourcematerialTypes: ko.observableArray ([{"Id": 1, "Name": " Kahve Çekirdeği "," Açıklama ":" Çiğ kahve çekirdekleri "," ÖlçülenIn ": 0," Ölçülen Değer ": 0}, {" Kimlik ": 2," İsim ":" Meyve "," Tanımlama ":" Taze Fruit "," MeasuredIn ": 1," MeasuredInValue ": 1}])', (ilk seçim "Kahve Çekirdeği" dir) –
Sanırım yalnızca kimliği değil, selectedSourceMaterialType gözlemlenebilir işlevindeki tüm nesneyi geçmeniz gerekir - > 'selectedSourceMaterialType: ko.observable (2)' – neebz