【问题标题】:Expecting a function in instanceof check, but got body - Trying to create view in Backbone期待 instanceof 检查中的函数,但得到了正文 - 尝试在 Backbone 中创建视图
【发布时间】:2014-12-03 09:59:56
【问题描述】:

我正在尝试在 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();

【问题讨论】:

  • 你检查过,下划线和 jquery 库真的被加载了吗?
  • 您是故意在迭代器中返回this 还是应该是render 的返回值?
  • 你能从控制台提供堆栈跟踪吗?
  • 是的,下划线和 jquery 库正在加载,我通过编写一些 jquery 进行检查,它可以工作..

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


【解决方案1】:

也许这可能是个问题。

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

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

改为监听集合上的 reset 事件,该事件将在集合填充后触发

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

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

【讨论】:

  • 感谢您的回复,但它不是 json 错误,我什至尝试使用模型中的默认值但没有运气..
  • 我在这里不是在谈论 json 错误。我的意思是在 fetch 之后立即调用 render 将是一个问题。
【解决方案2】:

像这样添加Backbone.$ = $;

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

【讨论】:

    猜你喜欢
    • 2014-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 2014-06-06
    • 1970-01-01
    相关资源
    最近更新 更多