对象#<object>的属性'$'不是_.extend._ensureElement </object>的函数

时间:2013-07-21 11:29:46

标签: javascript jquery node.js backbone.js

我试图通过创建一个View输出骨干模型的一些dafault值,但节点显示错误“对象#的属性'$'不是_.extend._ensureElement的函数”。我可以直接显示模型中的默认值,就像我在下面的代码中所做的那样但不是通过使用视图。为了显示一个例子,我已经注释掉了// myView = new firstView();所以你可以看到输出但很快我删除了我得到错误的评论。请让我知道缺少什么,我做错了什么。已经尝试将代码包装在$(function(){})中,但没有运气。

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

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

     Person = Backbone.Model.extend({
        defaults: {
            'name': 'Joe Blog',
            'job': 'Web Developer'
        }
     });

     firstPerson = new Person();
     firstView = Backbone.View.extend({

        initialize: function() {
            this.render();
        },
        render: function() {
            console.log(firstPerson.get('job'));
            return this;

        }
     })

     //myView = new firstView();
     console.log(firstPerson.get('name'));

1 个答案:

答案 0 :(得分:7)

Backbone代理jQuery库。它通常通过搜索全局$变量来实现。由于您在节点环境中执行代码,因此您需要手动执行此操作:

var Backbone = require('backbone'),
    $ = require('jQuery');

Backbone.$ = $;

作为旁注,您确实应该在变量前面使用var关键字,以便在函数范围内创建变量。 (见this question