2015-10-26 37 views
1

我的表單有文檔列表,一個輸入字段和按鈕。骨幹:防止this.render()重置爲輸入字段

的情景:

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

目前還不清楚爲什麼輸入字段變爲空白。我的猜測是在'search'方法中清除它。你可以分享DocumentView的'search'方法嗎? – Yura

回答

0

您可以在輸入字段中的值只是保存到當前視圖,模型等搜索點擊時,如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"/> 

一旦配置並綁定鉚釘。