我正在关注backbone.js tutorial并且部分代码无效,可能是因为Backbone在此期间发生了变化,或者因为我做错了什么。这是我视图的渲染功能。
// grab and populate our main template
render: function () {
// once again this is using ICanHaz.js, but you can use whatever
this.el = ich.app(this.model.toJSON());
// store a reference to our movie list
this.movieList = this.$('#movieList');
return this;
},
该元素稍后会在代码中附加到文档中。随后,当代码尝试将元素添加到this.movieList
时,Javascript表示它未定义。
我尝试将this.el = ...
更改为
this.setElement(ich.app(this.model.toJSON()));
这有帮助,因为this.$el
现已定义,但如果我尝试this.$el.find(...)
它就永远找不到任何内容,即使通过在Chrome中检查它确实包含HTML元素。
答案 0 :(得分:1)
我从未使用ICanHaz,但它的工作方式与其他模板语言一样,可能会返回HTML代码。在那种情况下,我会做类似的事情:
render: function(){
this.$el.html(ich.app(this.model.toJSON()));
}
addMovie: function (movie) {
var view = new MovieView({model: movie});
this.$el.find("#movieList").append(view.render().el);
},
希望这有帮助
PS:这是我第一次在骨干网代码o_O中看到this.$('something')
。他是否在视图中存储了JQuery的引用?