【发布时间】:2014-12-14 06:22:11
【问题描述】:
我有这段代码,由于我无法理解的原因,在使用require() 时会产生一个空对象。我的文件结构是这样的:
src
|__ public
|__ javascript
|__ collections
| categories.js
| listings.js <-- Always an empty object
|__ models
| category.js
| employer.js
| listing.js
| location.js
| routing
| templates
| tests
| ui-components
| views
问题文件是collections/listings.js,它似乎在需要时简单地输出为一个空对象,如下所示:
var ListingsCollection = require('../collections/listings')
src/public/javascript/collections/listings.js 看起来像这样:
var $ = require('jquery'),
_ = require('underscore'),
Backbone = require('backbone'),
Listing = require('../models/listing');
Backbone.$ = $;
module.exports = Backbone.Collection.extend({
url: '/listings',
model: Listing,
parse: function (response) {
return response.listings;
}
});
这是一个出错的例子:
var $ = require('jquery'),
_ = require('underscore'),
Backbone = require('backbone'),
LocationModel = require('../models/location'),
ListingsCollection = require('../collections/listings');
Backbone.$ = $;
console.log(ListingsCollection); // > Object {}
module.exports = Backbone.Model.extend({
urlRoot: '/employers',
model: {
location: LocationModel,
listings: ListingsCollection
},
parse: function (response) {
var employer = response.employer;
// Create the child listings
employer.listings = new ListingsCollection;
return employer;
},
toJSON : function () {
var json = _.clone(this.attributes);
_.each(_.keys(this.model), function (child) {
if (this.get(child)) {
json[child] = this.get(child).toJSON();
}
}.bind(this));
return json;
}
});
就是这样 - 该集合永远不需要雇主模型,因此它可以用于为父模型创建子集合。我已经查看了源代码并研究了这个问题,但到目前为止我什么都没有想出......这很令人困惑。
【问题讨论】:
-
控制台有错误吗?
-
最后能和.js一起工作吗?
-
@machineghost - 当我尝试将空对象用作预期的 Collection 对象时,会出现控制台错误。 browserify 捆绑过程运行顺利。
-
这只是 Require 的“乐趣”的一部分:你不能让模块 A 导入 B 导入 A(或 B 导入 C 导入 A,或......)。希望它不需要太多修改;我发布的那个链接有一些提示。
标签: javascript backbone.js require browserify