0

我正在主干中创建一个视图,该视图接受我想要渲染的集合,然后使用该集合将另一个视图附加到原始视图,但我不知道如何在集合的成功函数中引用原始视图。当我尝试以下代码时,我得到了未定义。

new GenreView().render(new PopVideosCollection());

define (['jquery','underscore','backbone'],function($,_,Backbone) {
GenreView = Backbone.View.extend({
    tagName:"div",
    className:"sect",
    template: _.template($("#genreView").html()),
    render: function (collection)
    {
        this.$el.html(this.template);
        collection.fetch ({success:function (video)
            {
                console.log(video.toJSON());
                                    console.log(GenreView.el);
            },
        });
    },
});
return GenreView;
 });
4

1 回答 1

2

您需要从回调内部获取对 GenreView 实例的引用。像这样的东西应该能让你到达那里:

var context = this;
collection.fetch ({success:function (video){
  console.log(video.toJSON());
  console.log(context.el);
  }
});

但是,您应该重新考虑一下您的方法。最好在您的收藏上调用 fetch,并让视图订阅reset您收藏的事件。从您的示例代码开始,它看起来像:

var GenreView = Backbone.View.extend({


  initialize: function() {
    this.listenTo(this.model, "reset", this.appendSubView);
  },

  render: function() {
     this.model.fetch();
  },
  appendSubView : function(video){
     console.log(video.toJSON());
     console.log(this.el);
  }

});
于 2013-03-04T00:36:06.597 回答