2012-03-24 96 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