2012-03-24 99 views
8

我想切換一個視圖模型中的對象與另一個,具有相同的類型(例如人)。如果我這樣做:KnockoutJS - 重新綁定ViewModel

var personViewModel = function (person) { 
    var self = this; 

    self.id = person.id; 
    self.firstName = ko.observable(person.firstName); 
    self.lastName = ko.observable(person.lastName); 
    self.addresses = ko.observableArray(contact.addresses); 

    self.removeAddress = function (address) { 
    self.addresses.remove(address); 
} 
} 

,並綁定它:

ko.applyBindings(new personViewModel(person), $("#person")[0]); 

它的第一次的偉大工程,但如果我在第二次其他對象綁定它,第一個綁定將不會消失。

如何輕鬆切換我的viewModel中的對象人?

回答

14

你基本上希望你的整個視圖模型是可觀察的,然後交換一個新的personViewModel對象。會是這樣:

var viewModel = { 
    person: ko.observable() 
}; 

viewModel.person(new personViewModel(person)); 

ko.applyBindings(viewModel); 

然後,只是換了一個人在像:

viewModel.person(new personViewModel(newPerson)); 
+0

的最佳解決方案。非常簡潔。我一直不滿意viewModel使用全局變量,但不知道如何解決它。謝謝你 – 2012-11-07 12:03:47