我正在构建一个清单应用程序,我刚刚移植了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的例子,但无济于事。
答案 0 :(得分:1)
尝试在脚本开头初始化checklistItems
变量:
var checklistItems = new Backbone.Collection();
checklistItems.localStorage = new Backbone.LocalStorage("items");
window.HomeView = Backbone.View.extend({
...