1

我正在尝试在 Backbone 中创建一个视图并尝试通过节点 require 加载库。我能够从模型/集合输出到控制台,但是当我开始创建视图时,我收到错误“在 instanceof 检查中期望一个函数,但得到了正文”。我尝试通过 $(function()({}) 加载 View 并尝试 $('document').ready 但没有运气 - 关于我在这里遗漏或做错的任何建议。谢谢

    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();
4

2 回答 2

0

Backbone.$ = $;像这样添加:

var express = require('express');
var $ = require('jQuery');
var _ = require('underscore');
var Backbone = require('Backbone');
Backbone.$ = $;
于 2014-12-03T01:59:56.403 回答
0

也许这可能是个问题。

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

您正在获取集合(这是异步的)并立即调用渲染方法。

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

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

并将 移至循环return this外。$.each

于 2013-07-20T18:47:27.483 回答