У меня есть этот код, который по причинам, которые я не могу понять, создает пустой объект при использовании 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;
}
});
Итак, это так: эта коллекция никогда не требует от модели работодателя такой, что ее можно использовать для создания дочерней коллекции для родительской модели. Я посмотрел на источник и исследовал эту проблему, но до сих пор ничего не придумал... Это озадачивает.