1

我正在尝试通过 Backbone.js 使我的 Backbone.js 组件、模型和视图模块化。但是,每当我尝试使用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收藏品,但显然不是。谁能看到我做错了什么?

4

1 回答 1

1

一切似乎都很好。你看到什么了:

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

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

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

于 2013-04-12T13:12:26.903 回答