【问题标题】:Property '$' of object #<Object> is not a function at _.extend._ensureElement对象#<Object> 的属性“$”不是 _.extend._ensureElement 处的函数
【发布时间】:2013-07-20 06:14:44
【问题描述】:

我正在尝试通过创建视图来输出主干模型的一些默认值,但节点显示错误“对象# 的属性'$'不是 _.extend._ensureElement 的函数”。我可以像在下面的代码中那样直接显示模型的默认值,但不能使用视图。为了展示一个例子,我已经注释掉了 //myView = new firstView();所以你可以看到输出,但很快我删除了我得到错误的 cmets。请让我知道缺少什么以及我做错了什么。已经尝试将代码包装在 $(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'));

【问题讨论】:

    标签: javascript jquery node.js backbone.js


    【解决方案1】:

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

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

    附带说明一下,您确实应该在变量前面使用var 关键字,以使变量成为函数范围的局部变量。 (见this question

    【讨论】:

    • 太好了 - 非常感谢 :)
    猜你喜欢
    • 1970-01-01
    • 2012-09-04
    • 2013-07-21
    • 1970-01-01
    • 1970-01-01
    • 2013-04-03
    • 1970-01-01
    • 1970-01-01
    • 2011-01-05
    相关资源
    最近更新 更多