0

私はそのようなmodelViewを持っています:

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

私はここでそれを参照しています:

<select id="teamNameLabel" date-theme="f" data-bind="options: teams, optionsText: 'id', value: selectedTeam"></select>

チームの1つを選択すると、ボタンを押すことができます。

<input id="TestButton" type="button" onclick="GetAllUsersByTeam()" value="Show Selected Team" />

そしてそれはこれを呼びます:

function GetAllUsersByTeam(){

        var url = 'http://localhost/Service.svc/GetUsersByTeam/'+teamViewModel.selectedTeam().id;

        var jqxhr =
        $.getJSON(url,
        function (data) 
        { 
            colleagueViewModel.clearColleagues();
            $.each(data.GetUsersByTeamResult, function (key, val) {
                colleagueViewModel.addColleague(val.FirstName, val.LastName, val.EmailAddress, val.PhoneNumber, val.LocationName, val.CapabilityId, val.CoeId);
            });
            ko.applyBindings(colleagueViewModel, document.getElementById("colleaguesListView"));
        })
    }

これも私が望むように機能します。ただし、GetAllUsersByTeam()がonchangeと呼ばれるように変更したいと思います。でも:

<select id="teamNameLabel" date-theme="f" onchange="GetAllUsersByTeam()" data-bind="options: teams, optionsText: 'id', value: selectedTeam"></select>

常に1ID遅れています。たとえば、1を選択すると、idは1、2 idは1、3 idは2...これを修正するにはどうすればよいですか?

4

1 に答える 1

2

selectedTeamモデルでサブスクライブしてみませんか?

this.selectedTeam.subscribe(function(newValue) {
    GetAllUsersByTeam();
});
于 2012-10-22T20:56:56.437 に答える