在使用实例化子视图的parentView中,backbone.js未捕获的typeError

时间:2013-11-18 17:45:40

标签: javascript backbone.js view render

我正在尝试为parentView调试此代码。从此代码抛出的错误是“Uncaught TypeError:无法读取未定义的属性'属性'”。 console.log也以未定义的形式返回,但是如果我在后面的render函数中调试了相同的this.model.total_fans,则它具有一个值。我不太了解骨干网来调试这个烦人且可能微不足道的错误,但我觉得这样设置的方式是错误的,特别是在阅读有关在这里处理渲染子视图的帖子How to handle initializing and rendering subviews in Backbone.js?之后。我想知道这里有什么问题。我应该在父母初始化中实例化子视图吗?并且父母应该在模型更改上调用render和pagesetup吗?

initialize:function () {
    var self = this;

    // General model for this page
    this.model = new geodemoModel();

    // separate summary model
    this.summaryModel = new summaryModel();

    this.model.fetch();
    this.summaryModel.fetch();

    this.model.bind('change', this.render, this);
    this.model.bind('change', this.pageSetup, this);

    this.summaryModel.bind('change', this.render, this);
    this.summaryModel.bind('change', this.pageSetup, this);

  },

pageSetup:function () {
 if (this.oneSelect == 'All' || this.oneSelect == 'lifetime_fans') {
        console.log(this.model.total_fans);
        var viewLifetime = new lifetimeView(this.model.total_fans.attributes.total_fans_object);
        $('#lifetimeFans').html(viewLifetime.render().el);
      }

1 个答案:

答案 0 :(得分:1)

假设您的模型存在,您应该使用:

this.model.get('total_fans').attributes.total_fans_object

如果不起作用,请在console.log(this.model)内粘贴pageSetup