2011-09-02 35 views
0

我看不到如何將下拉列表綁定到模型中的值。無法將<select>綁定到模型值

假設我的強類型型號是FA.Domain.Entities.Account

Account有一個PersonId字段,我想綁定到選擇下拉列表。當顯示視圖時,我想讓它反映@Model.PersonId的值。

我的代碼如下:

選擇標籤:

<select id="People" 
     data-bind="options: allPeople, 
        value: selectedPerson, 
        optionsValue: 'PersonId', 
        optionsText: 'NamePP'"> 
</select> 

的Javascript:

var pps = @Html.Raw(new JavaScriptSerializer().Serialize(ViewBag.PossiblePeople)); 

function person(PersonId, NamePP) {    
    this.CostCentreId = ko.observable(PersonId); 
    this.NamePP = ko.observable(NamePP); 
} 

function PersonViewModel() {   

    this.selectedPerson = ko.observable('@Model.PersonId'); 

    var mapAllPeople = $.map(pps, function(item) { 
     return new person(item.PersonId, item.Name)}); 

    this.allPeople = ko.observableArray(mapAllPeople); 
}   

jQuery(document).ready(function() { 
    var viewModel = new PersonViewModel(); 
    alert(viewModel.selectedPerson()); // correct value 
    ko.applyBindings(viewModel); 
    alert(viewModel.selectedPerson()); // undefined  
}); 

我在做什麼錯?

我已經提出了兩個警報,以顯示selectedPerson的值。一個在綁定發生之前進行並顯示正確的值,另一個在後面並顯示「未定義」。

回答

2

我測試了一些東西,

function person(PersonId, NamePP) {    
    this.CostCentreId = ko.observable(PersonId); 
    this.NamePP = ko.observable(NamePP); 
} 

應該是:

function person(PersonId, NamePP) {    
    this.PersonId = ko.observable(PersonId); 
    this.NamePP = ko.observable(NamePP); 
} 
+0

非常感謝。森林和樹木。 – awrigley

相關問題