期待一个函数在instanceof检查,但得到正文 - 尝试在Backbone中创建视图

时间:2013-07-20 09:12:58

标签: javascript jquery json node.js backbone.js

我正在尝试在Backbone中创建一个视图,并尝试通过node require加载libs。我可以从Model / Collection输出到控制台,但是当我开始创建视图时,我收到错误"期望在instanceof check中的函数,但得到了body"。我试图通过$(function()({})加载View并尝试$(' document')。准备但没有运气 - 有关我在这里缺少或做错的任何建议。谢谢

    var express = require('express');
    var $ = require('jQuery');
    var _ = require('underscore');
    var Backbone = require('Backbone');
    var app = express();

    app.use(express.static(__dirname + '/'));
    app.listen(process.env.PORT || 3000);

    var myModel = Backbone.Model.extend();
    var myCollection = Backbone.Collection.extend({
        model: myModel,
        url: "myjson.json",
        parse: function(response) {
            return response.cars;
        }
    })

     var cars = new myCollection();

    var myView = Backbone.View.extend({

        el: 'body',

        initialize: function() {

            cars.fetch();
            this.render();
        },
        events: {
            'click div.test': 'render'
        },
        render: function() {

            cars.each(function(myModel) {
                var _comp = myModel.get('make');
                $('div.new_test').append(_comp);

                console.log(_comp);
                return this;
            })
        }
    })

     var yourView = new myView();

2 个答案:

答案 0 :(得分:0)

也许这可能是个问题。

initialize: function() {
     cars.fetch();
     this.render();
},

您正在获取集合(哪个是异步)并立即调用render方法。

而是收听集合上的reset事件,并在填充集合后触发

initialize: function() {
     this.listenTo(cars, 'reset', this.render);
     cars.fetch();
},

return this移到$.each循环之外。

答案 1 :(得分:0)

像这样添加Backbone.$ = $;

var express = require('express');
var $ = require('jQuery');
var _ = require('underscore');
var Backbone = require('Backbone');
Backbone.$ = $;