Backbone:阻止this.render()重置为输入字段

时间:2015-10-26 16:38:50

标签: jquery backbone.js render marionette reset

我的表单包含文档列表,一个输入字段和按钮。

情景:

  1. 我在输入字段中输入产品名称。
  2. 我点击搜索按钮
  3. 呈现具有该名称的文档但重置输入字段(变为空白)
  4. 如何阻止渲染功能重置输入字段? 这是我的代码的一部分:

    视图

    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();  
        });
    });
    

1 个答案:

答案 0 :(得分:0)

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

当调用render时,你可以将它设置回输入字段。

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"/>

配置并绑定铆钉后。