从另一个对象中引用对象

时间:2013-03-04 00:15:15

标签: javascript jquery backbone.js require

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

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;
 });

1 个答案:

答案 0 :(得分: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);
  }

});