【问题标题】:KnockoutJS - Rebinding ViewModelKnockoutJS - 重新绑定 ViewModel
【发布时间】:2012-03-25 03:03:56
【问题描述】:

我想将 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 中轻松切换对象人?

【问题讨论】:

    标签: javascript knockout.js


    【解决方案1】:

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

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

    然后,换个新人就好了:

    viewModel.person(new personViewModel(newPerson));
    

    【讨论】:

    • 很好的解决方案。非常整洁和简单。我一直不满意为 viewModel 使用全局变量,但不知道如何绕过它。谢谢你
    猜你喜欢
    • 1970-01-01
    • 2012-08-28
    • 2016-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-26
    • 2013-09-02
    • 2015-07-12
    相关资源
    最近更新 更多