在获取集合后,Backbone呈现不会附加HTML

时间:2014-02-24 03:01:36

标签: javascript jquery backbone.js

我正在构建一个清单应用程序,我刚刚移植了Backbone Todo example中的大部分代码。我被困在我刷新应用程序的部分,它应该从存储在本地存储中的所有内容中追加HTML。我在控制台中输入时附加功能,我的清单中的新项目添加得很好。但刷新页面,一切都消失了。

我已经放置了一个console.log行来打印出追加行之前的view.render()。el的内容,并验证它是否正确:

renderItem: function(listItem) {
    var view = new ListItemView({model: listItem});     
    this.$("#myChecklist").append(view.render().el);
    $('[type="checkbox"]').checkboxradio(); // jQuery re-render
},

如果我把print(read.log)放到view.render()。el,我得到了正确的内容。这是在文档准备好之后完成的。这是我的初始化函数,我绑定事件:

initialize: function() {
    this.listenTo(checklistItems, 'add', this.renderItem); // runs renderItem() when model is added to checklist
    checklistItems.localStorage = new Backbone.LocalStorage("items");
    checklistItems.fetch();
},

在调用renderItem函数之后,HTML保持不变(带有id = myChecklist的ul仍然没有内部)。

其余代码位于repo here。我正在使用main.js,而不是app或index.js。

对于我的生活,我无法弄清楚出了什么问题,并且已经尝试过仔细遵循Todo的例子,但无济于事。

1 个答案:

答案 0 :(得分:1)

尝试在脚本开头初始化checklistItems变量:

var checklistItems = new Backbone.Collection();
checklistItems.localStorage = new Backbone.LocalStorage("items");

window.HomeView = Backbone.View.extend({
...