2011-09-02 58 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

相关问题