KnockoutJS - 重新绑定ViewModel

G M*_*ile 8 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.addresses = ko.observableArray(contact.addresses);

  self.removeAddress = function (address) {
  self.addresses.remove(address);
 }
}
Run Code Online (Sandbox Code Playgroud)

并绑定它:

ko.applyBindings(new personViewModel(person), $("#person")[0]);
Run Code Online (Sandbox Code Playgroud)

它第一次工作得很好,但是如果我第二次将它与另一个对象绑定,第一次绑定就不会消失.

如何在viewModel中轻松切换对象人?

RP *_*yer 14

您基本上希望整个视图模型是可观察的,然后交换一个新的personViewModel对象.就像:

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

viewModel.person(new personViewModel(person));

ko.applyBindings(viewModel);
Run Code Online (Sandbox Code Playgroud)

然后,只需交换一个新人,如:

viewModel.person(new personViewModel(newPerson));
Run Code Online (Sandbox Code Playgroud)