2012-10-22 20 views
0

我有一個模型視圖,看起來就像是:選擇平變化將返回錯誤的值

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> 

,當我選擇的球隊之一,我可以打一個按鈕:

<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> 

總是1個ID晚。例如,當我選擇1它的id是1,2 id是1,3 id是2 ... 我該如何解決這個問題?

回答

2

爲什麼不直接在您的模型中訂閱selectedTeam

this.selectedTeam.subscribe(function(newValue) { 
    GetAllUsersByTeam(); 
});