2013-06-03 97 views
0

我有插入,更新这个淘汰赛视图模型,删除以及显示全市淘汰赛模型绑定技术

function City(data) { 
    this.CityId = ko.observable(data.CityId); 
    this.CityName = ko.observable(data.CityName); 
} 
function CityViewModel() { 
    var self = this; 
    self.Citys = ko.observableArray([]); 
    self.SelectedCity = ko.observable(); 
    self.EditingCity = ko.observable(new City({ CityId: '', CityName: '' })); 

    self.EditCity = function (city) { 
     $.ajax("/Controller/GetSingalCity/" + ko.toJSON(city.CityId), { 
      data: ko.toJSON({ CityId: city.CityId }), 
      type: "POST", contentType: "application/json", 
      success: function (result) { 
       if (result.Success) { 
        var cityid = result.Data.CityId; 
        var cityname = result.Data.CityName; 
        self.EditingCity(new City({ CityId: cityid, CityName: cityname })); 
       } 
       else { 
        alert("Error.."); 
       } 
      } 
     }); 
    }; 
} 

与此代码,每次插入,修改,删除我不得不使用使用

self.EditingCity(new City({ CityId: cityid, CityName: cityname })); 

或者

self.EditingCity(new City({ CityId: '', CityName: '' })); 

我不想箱子self.EditingCity(新城市({CityId: '',CITYNAME: ''}));对于每个操作(插入,更新,删除)。任何一个人都可以告诉我怎么做? 我是初学者与淘汰赛....

回答

1

你不需要创建一个新的城市对象。相反,只需更新现有的。任何与该EditingCity对象数据绑定的视图都应自动更新。

所以,与其写:

self.EditingCity(new City({ CityId: cityid, CityName: cityname })); 

你应该写:

self.EditingCity().CityId(newCityId); 
self.EditingCity().CityName(newCityName); 
+0

帕特里克,我相信你想要的东西: self.EditingCity()CityId(newCityId)。 self.EditingCity()。CityName(newCityName); 因为EditingCity是可观察的。 (注意EditingCity后的parens) –

+0

进行编辑。谢谢。 –