主干.js - 是否可以为模型定义多个 el 值
Backbone.js - is it possible to define multiple el values for a model?
我想定义一个SearchApp(扩展Backbone.view)的模型和el属性,以便在3个不同的ElasticSearch索引中进行搜索。但是,我希望这些结果中的每一个都显示在单独的div 中,每个模型都有一个不同的div。我现在拥有的是:
var searchApp = new SearchApp({model: [searchModel1, searchModel2, searchModel3], el: $("#results1")});
但我理想中想要的是
var searchApp = new SearchApp({model: [searchModel1, searchModel2, searchModel3], el: [$("#results1"),$("#results2"),$("#results3")]});
这样,搜索模型 1 返回的数据显示在div 结果 1 中,搜索模型 2 返回的数据显示在div 结果 2 中,搜索模型 3 返回的数据显示在div 结果 3 中。但是,这对我不起作用,我无法用列表定义 el。是否有任何解决方法,或者这甚至可能吗?非常感谢!
开箱即用,它不起作用并且是错误的,但是解决方法和更正确的方法是这样做的。
不使用模型:使用collection:并将其包装到新的Backbone.Collection中。
跳过默认 EL 的使用并将其作为结果占位符传递,然后在渲染时使用它
var searchApp = new SearchApp({collection: new Backbone.Collection([searchModel1, searchModel2, searchModel3]), placeholders: [$("#results1"),$("#results2"),$("#results3")]});
SearchApp = Bb.View.extends({
initialize: function (options) {
this.placeholders = options.placeholders
}
render: function() {
//for each this.placeholders render searchModel (event better wrap it in new view)
}
});
但是,通过这种方式,您的搜索应用程序实际上不是视图,而是某个实例的管理器。
我建议每个视图都应该有自己的模型,我的猜测是你已经知道有多少个搜索模型及其视图对象。因此,只需创建一个接受您的模型和 $ 并创建视图的方法。
function(model, $el) {
return new SearchApp({model: model, $el: $el});
}
然后在该视图中,当您收到搜索响应时进行侦听并相应地呈现。
相关文章:
- 用嵌套函数和默认函数定义函数
- Dojo不解析自定义小部件的模板html中的小部件声明性
- 为什么“;未定义的“;在JavaScript中结束循环
- 要求未定义JS回调参数
- 控制台返回var不是't定义,但它是
- 在自定义mean.io包中使用angular-chart.js作为依赖项
- 如何检查管道中未定义的项目
- TypeError:无法读取属性'推'未定义的JavaScript
- JQuery需要帮助理解(i,el)
- jQuery自定义验证比较多个输入的序列
- 查看JS对象的所有键,甚至是getter定义的键
- 未指定预定义 el 而不呈现的主干视图
- Angular ES6,THIS,Scope和EL在JQLITE点击事件中全部未定义
- Backbone.Marionette collectionview 在定义 el 时重置
- 主干网在定义后不能立即使用 this.el
- 主干.js - 是否可以为模型定义多个 el 值
- backbone.js-集合视图给出"TypeError:无法读取属性'el'未定义的“;错误
- backbone.js为什么el未定义
- 这一点.$el在编写typescript插件时未定义
- 为什么这个.$el给出未定义的错误,但$(this.el)在Backbone视图的渲染函数中工作