Javascript KnockoutJS-重新绑定ViewModel

Javascript KnockoutJS-重新绑定ViewModel,javascript,knockout.js,Javascript,Knockout.js,我想将viewModel中的一个对象与另一个具有相同类型(例如Person)的对象进行切换。如果我这样做: var personViewModel = function (person) { var self = this; self.id = person.id; self.firstName = ko.observable(person.firstName); self.lastName = ko.observable(person.lastName); self.ad

我想将viewModel中的一个对象与另一个具有相同类型(例如Person)的对象进行切换。如果我这样做:

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中轻松切换对象person?

您基本上希望整个视图模型可见,然后在新的personViewModel对象中进行交换。我想:

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

viewModel.person(new personViewModel(person));

ko.applyBindings(viewModel);
然后,只需交换一个新人,如:

viewModel.person(new personViewModel(newPerson));

很好的解决方案。非常简洁。我不喜欢在viewModel中使用全局变量,但不知道如何绕过它。谢谢你