0

我正在关注backbone.js教程,但部分代码无法正常工作,可能是因为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 元素。

4

1 回答 1

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:这是我第一次this.$('something')在骨干代码o_O中看到。他是否将 JQuery 的引用存储在视图上?

于 2013-10-09T10:46:34.630 回答