1

我遇到了一个问题,我不知道该怎么咬。我有一个带有很多过滤器的搜索表单。我将所有当前的过滤器存储在全局名称页面中,即:window.NM.CurrentSearchParams = {},然后我从过滤器中更新哈希。每次更新哈希时,都会触发更新 uri 事件以使用当前参数重新定位 window.localtion.search。这里一切正常。现在我在进入页面反序列化 window.location.search 并使用参数更新 CurrentSearchParams 后遇到问题。那也很好,但我想根据这些参数重新填充表格。我的代码有点乱,不确定最好的方法。如何将不同视图中的表单填充绑定到参数?

4

1 回答 1

0

制作CurrentSearchParams一个 Backbone.Model,以便您可以订阅其上的change事件。


NM.CurrentSearchParams = new Backbone.Model();


MyView = Backbone.View.extend({

  initialize: function(){
    NM.CurrentSearchParams.on("change", this.doStuff, this);
  },

  doStuff: function(){
    // do stuff here
  },

  close: function(){
    NM.CurrentSearchParams.off("change", this.doStuff, this);
  }

});

请注意我添加的“关闭”方法。这非常重要,您需要在视图完成并准备关闭时调用它,否则最终会导致大量内存泄漏和在僵尸视图实例上触发的事件:http: //lostechies.com/derickbailey/ 2011/09/15/zombies-run-managing-page-transitions-in-backbone-apps/

于 2012-09-28T20:57:32.517 回答