主干集合视图仅渲染集合中的最后一个对象
Backbone Collection View is only rendering last object in the collection
我正在尝试将集合视图的渲染输出放置到dom上。但是,在流程结束时,页面上只显示集合中的最后一个对象。
我在视图上设置了一个事件处理程序,这样当一个项目被单击时,它的title
就会被注销。每当我点击放置在Dom上的这个单一元素时,我的每个对象的标题都会被记录下来,即使只显示一个,所以每个处理程序都被应用到最后一个元素,但不知何故会注销正确的标题。
有人知道我如何渲染集合中的每一项而不仅仅是最后一项吗?下面是我的代码的快速浏览。
最终目标是列出每部电影的名字。
型号
首先,定义模型-这里没有什么令人兴奋的
var FilmModel = Backbone.Model.extend({});
查看
这是我为胶片模型制作的视图的简化版本
var FilmView = Backbone.View.extend({
// tagName: 'li',
initialize: function() {
this.$el = $('#filmContainer');
},
events: {
'click': 'alertName'
},
alertName: function(){
console.log("User click on "+this.model.get('title'));
},
template: _.template( $('#filmTemplate').html() ),
render: function(){
this.$el.html( this.template( this.model.attributes ) );
return this;
}
});
集合
再次,似乎是标准的。
var FilmList = Backbone.Collection.extend({
model: FilmModel,
});
集合视图
改编自代码学校的主干课程
var FilmListView = Backbone.View.extend({
// tagName: 'ul',
render: function(){
this.addAll();
return this;
},
addAll: function(){
this.$el.empty();
this.collection.forEach(this.addOne, this);
},
addOne: function(film){
var filmView = new FilmView( { model: film } );
this.$el.append(filmView.render().el);
// console.log(this.$el);
}
});
开始时间
var filmList = new FilmList({});
var filmListView = new FilmListView({
collection: filmList
});
var testFilms = [
{title: "Neverending Story"},
{title: "Toy Story 2"}
];
filmList.reset(testFilms);
filmListView.render();
到目前为止,根据我对Backbone的理解,这应该做的是添加,使用FilmView中指定的模板将filmList集合中的每个项目渲染到filmListView中的el中。
然而,实际发生的情况是,最终标题总是放在DOM上。
我最初(当这是从API引入时)认为这个问题可能与这个问题类似,但现在我正在用自己的testFilms重置,我可以肯定我没有覆盖或设置任何不应该覆盖或设置的id
属性。
有人有什么想法吗?
我认为可以将FilmView的el设置为一个id,该id应该始终是唯一的,但是,然后循环遍历集合,并使用当前模型不断重置该el/id,因为每个FilmView都将具有相同的el
相关文章:
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- 表追加而不附加最后一个元素
- Amd,希望确保某个东西总是最后执行
- Meteor-将选定窗体中的对象添加到集合中
- 主干集合重置和解析
- 键入最后一位数字后自动提交
- 无法在Ionic select中预先选择最后一个选项
- 使用数据上的角度更改设置集合的第一个元素的动画
- 为集合分配大量的模型弹药
- 如何使用backbone.js从集合中获取模型名称
- Lodash从集合创建集合
- 动态插入的表:JQuery未检测到最后一行
- 为什么画布形状只在3个画布中的最后一个画布上渲染
- 如何查找流星集合中最后一个元素/对象的id
- 在Meteor中使用#each,检查是否'最后'已到达集合中的元素
- 获取插入到集合中的最后一个值
- 主干集合视图仅渲染集合中的最后一个对象
- 选择集合中最后一个方括号输入元素
- 我如何在一个数字集合中选择最后几位数
- 骨干-删除集合中的最后一个模型,但只能通过过滤器