将viewmodel显示为下拉列表

时间:2012-10-23 14:10:37

标签: jquery jquery-mobile knockout.js

我有一个看起来像这样的viewmodel:

var teamViewModel = {
        teams: ko.observableArray([]),
        clearTeams: function(){
            this.teams.removeAll();
        },
        addTeam: function (id, name, isChecked) {
            t = new team(id, name, isChecked);
            this.teams.push(t);
        }
    };

我正在让所有团队都这样:

function GetAvailableTeams() {

        var jqxhr =
        $.getJSON('http://localhose/Service.svc/GetTeamsAll',
          function (data) {
                teamViewModel.clearTeams();
                $.each(data.GetTeamsAllResult, 
                    function (key, val) {
                        teamViewModel.addTeam(val.TeamId, val.TeamName, true);
                    });
                ko.applyBindings(teamViewModel, document.getElementById("teamNameLabel"));
          })
    }

如何对select进行数据绑定,将TeamName作为名称,将TeamId作为Value。

这是我的尝试,但其说法ID无法识别:

<select id="teamNameLabel" onclick="nextfunction()" date-theme="f" data-bind="options: teams, optionsText: 'name', value: 'id'"></select>

我也希望id返回onchange()

1 个答案:

答案 0 :(得分:1)

如果您只想存储optionsValue,则应使用value绑定而不是id

<select id="teamNameLabel" data-bind="options: teams, optionsText: 'name', optionsValue: 'id'"></select>

使用value绑定时,不应使用quotes包装属性名称。在这种情况下,属性将存储整个team对象。