Backbone:防止 this.render() 对输入字段进行重置
Backbone: prevent this.render() from doing reset to the input fields
我的表单有文档列表、一个输入字段和按钮。
场景:
- 我在输入栏中输入产品名称。
- 我点击搜索按钮
- 呈现具有该名称的文档但输入字段被重置(变为空白)
如何防止渲染函数重置输入字段?
这是我的代码的一部分:
景色
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"/>
配置和绑定铆钉后。
我的表单有文档列表、一个输入字段和按钮。
场景:
- 我在输入栏中输入产品名称。
- 我点击搜索按钮
- 呈现具有该名称的文档但输入字段被重置(变为空白)
如何防止渲染函数重置输入字段? 这是我的代码的一部分:
景色
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"/>
配置和绑定铆钉后。