javascript - 使用 Require.js 使 Backbone.js 模块化

标签 javascript backbone.js requirejs

我正在尝试通过 Backbone.js 使我的 Backbone.js 组件、模型和 View 模块化。然而,每当我尝试 require() 时,它都会返回:

function (){return i.apply(this,arguments)} 

而不是我需要的 Backbone 魔法。

我已经像这样设置了 Require.js:

// Configure require.js
require.config(
    {
        paths: {
            "data": "config"
        ,   "jquery": "libs/jquery.min"
        ,   "underscore": "libs/underscore-min"
        ,   "backbone": "libs/backbone-min"
        ,   "events": "collections/events"
        ,   "eventModel": "models/eventModel"
        ,   "eventView": "views/eventView"
        }
    ,   shim: {
            underscore: {
                exports: '_'
            }
        ,   jquery: {
                exports: '$'
            }
        ,   backbone: {
                deps: ["underscore"]
            ,   exports: "Backbone"
            }
        }
    }
);

// Initiate app
require(
    [
        "data"
    ,   "jquery"
    ,   "underscore"
    ,   "backbone"
    ,   "events"
    ,   "eventModel"
    ,   "eventView"
    ], function(data, $, _, Backbone, Events, EventModel, EventView) {
        console.log(Events);
        _.each(["data/general.xml"], function(URI) {
            var general = new Events({url: URI});
        });
    }
);

这是我的 collections/events.js:

define(
    [
        "backbone"
    ,   "eventModel"
    ]
,   function(Backbone, EventModel) {
        "use strict";
        var Events = Backbone.Collection.extend({
            model: EventModel

        ,   parse: function(data) {
                var parsed = [];
                $(data).find('Event').each(function(index) {
                    parsed.push({
                        title: $(this).find('title').text(),
                        date: $(this).find('date').text(),
                        content: $(this).find('content').text()
                    });
                });
                return parsed;
            }

        ,   fetch: function(options) {
                options = options || {};
                options.dataType = "xml";
                Backbone.Collection.prototype.fetch.call(this, options);
            }
        });

        return Events;
    }
);

我希望返回 Events 集合,但显然不是。谁能看出我做错了什么吗?

最佳答案

一切看起来都很好。您所看到的:

function (){return i.apply(this,arguments)} 

是你的类的构造函数。不用理会它。相反,尝试记录new myClass

编辑:
您看不到任何方法,因为它们存储在您的类的原型(prototype)中。调用的 i 函数是“真正的”构造函数(命名为 i 因为它已被缩小)。

关于javascript - 使用 Require.js 使 Backbone.js 模块化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15972284/

相关文章:

javascript - 使用 CDN jQuery 的 Require.js 构建 (r.js) 未链接到良好的 jQuery 路径

javascript - 如何使用带有 backbone.js 的 pubsub 聚合事件数据?

javascript - Backbone.js 使用集合渲染 View

javascript - 在 DOM 中找不到 RequireJs 对象(用于 UI 访问)

javascript - 如何将 geojson 文件的内容分配给 Javascript 中的变量?

javascript - Android 混合应用程序给我 "Uncaught SyntaxError: Unexpected identifier",源 : (1)

javascript - Eloquent Javascript 第 5 章练习题,使用 !array.some

javascript - 在 backbone js 中重新创建已删除的 View

javascript - 使用 requirejs 测试 uiRouter

javascript - 在变量中存储最近的和 parent 在 Internet Explorer 中不起作用