Backbone:防止 this.render() 对输入字段进行重置

Backbone: prevent this.render() from doing reset to the input fields

我的表单有文档列表、一个输入字段和按钮。

场景:

  1. 我在输入栏中输入产品名称。
  2. 我点击搜索按钮
  3. 呈现具有该名称的文档但输入字段被重置(变为空白)

如何防止渲染函数重置输入字段? 这是我的代码的一部分:

景色

View.DocumentsView = Marionette.CompositeView.extend({      
    events : {
        "click button.js-Doc-search": "search",
    },
    initialize: function() {
        this.collection = this.model.get("list");
    },
    onRender : function(){      
        // Do something to prevent the reset of the input
    }
});

控制器

documentsView.on("documents:search", function(name) {
    var that = this;
    var fetchingDocuments = this.request("document:entities", name);
    $.when(fetchingDocuments).done(function(documents) {            
        that.model = documents;
        that.collection = documents.get("list");
        that.render();  
    });
});

点击搜索时,您可以将输入字段中的值简单地保存到当前视图、模型等,例如this.searchTerm = this.$el.find('selector for input').val()

并且在调用渲染时,您只需将其设置回输入字段即可。

View.DocumentsView = Marionette.CompositeView.extend({      
  events : {
    "click button.js-Doc-search": "search",
  },
  initialize: function() {
    this.collection = this.model.get("list");
  },
  onRender : function(){      
    // Do the rendering
    if(this.searchTerm)
      this.$el.find('selector for input').val(this.searchTerm);
  }
});

或者如果您使用像 rivets 这样的库来始终保持值和输入同步

它会像

一样简单
<input rv-value="view.searchterm"/>

配置和绑定铆钉后。