Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 主干this.model.models未定义错误_Backbone.js - Fatal编程技术网

Backbone.js 主干this.model.models未定义错误

Backbone.js 主干this.model.models未定义错误,backbone.js,Backbone.js,我正在尝试从我的服务器(node.js)获取mongodb集合,并使用主干在模板(下划线)上呈现此内容。Mongodb和node.js部分工作正常,因为我证明了我对集合做了一个console.log,它为我带来了集合。我有下面的代码(我剪切了一些不相关的代码部分): router.js bookListView.js bookListItemView.js 我的问题是this.model.models=undefined,我不明白为什么在同一个代码完美运行之前5分钟会导致。如果我使用consol

我正在尝试从我的服务器(node.js)获取mongodb集合,并使用主干在模板(下划线)上呈现此内容。Mongodb和node.js部分工作正常,因为我证明了我对集合做了一个console.log,它为我带来了集合。我有下面的代码(我剪切了一些不相关的代码部分):

router.js

bookListView.js

bookListItemView.js

我的问题是this.model.models=undefined,我不明白为什么在同一个代码完美运行之前5分钟会导致。如果我使用console.log(this.model),它会显示模型列表

我的代码是从Christophe Coenraets的回购协议中得到启发的


希望您的帮助,thak you,考虑到这个问题可能是因为您在其他地方调用了
render
方法

该集合仅在异步获取之后填充。因此,当调用
render
方法时,
model
属性未定义。因此,您将看到一个错误

要解决此问题,必须仅在填充集合并初始化视图后调用
render
。(在成功回调中)

另外,为什么要在inturn实际上是一个集合的模型中使用太多的名称


({collection:bookList})
({model:bookList})

console.log(this.model)
中的
bookListView.js
应该为您提供一个
bookletry
的实例,您能验证一下吗?并尝试查看您在过去5分钟内所做的破坏现有功能的所有更改:-/看起来您并不是在router.js中调用BookListView上的render,是吗?请检查
this.model
是否实际上是主干集合的一个实例,而不仅仅是一个对象数组。
appRouter.on('route:books', function () {
    var bookList = new BookCollection();
    bookList.fetch({
        success: function () {
            $('#content').html(new BookListView( { model: bookList } ).el);
        }
    });
});
  , render: function ()  {
        var books = this.model.models;

        $(this.el).html(this.template());

        _.each(this.model.models, function(book) {
            $('.thumbnails', this.el).append(new BookListItemView( { model: book } ).render().el);
        }, this);
  }
  , render: function ()  {
        $(this.el).html(this.template(this.model.toJSON()));
        return this;
  }
bookList.fetch({
        success: function () {
            var bookListView = new BookListView( { model: bookList } );
            $('#content').html(bookListView.el);
            bookListView.render(); // Need to call render here
        }
    });