Я пытаюсь преобразовать базовую коллекцию в амперсанд. Вот то, что я до сих пор (я также преобразование из requirejs в WebPack с использованием CommonJS по пути): сбор Backbone:Как конвертировать скелетную коллекцию в амперсанд?
define([ 'backbone', 'models/loneItem'], function(Backbone, LoneItem) {
return Backbone.Collection.extend({
model: LoneItem,
urlRoot: '/deeply/nested/path/',
url: function() {
return this.urlRoot + this.options.id + '/';
},
initialize: function(models, options) {
this.options = options || {};
},
parse: function(response){
return response.arrayAttribute;
}
});
});
, а затем в представлении я его экземпляр так:
...
var myCollection = new GroupOfItems([], { id: 'someID' });
myCollection.fetch();
, который затем вызовет вызов /deeply/nested/path/someID/
, найдет arrayAttribute
в возвращаемых данных и преобразует его содержимое в набор моделей LoneItem, доступных по myCollection
.
Для коллекции амперсанд:
var Collection = require('ampersand-rest-collection');
var LoneItem = require('../models/LoneItem');
module.exports = Collection.extend({
model: LoneItem,
url: '/deeply/nested/path/',
parse: function(response){
return response.arrayAttribute;
}
});
И его вид:
...
var myCollection = new GroupOfItems();
myCollection.fetchById('someID');
Данные возвращаются выглядит как этот
{
"arrayAttribute": [
{"id": "stringID1", "title": "Title A"},
{"id": "stringID2", "title": "Title B"}
]
}
Он производит успешную XHR, но myCollection
только становится объектом коллекции с одним членом, который имеет реквизиты по умолчанию из LoneItem
. Является ли проблема, что возвращаемые данные не имеют атрибута id
, установленного на корневом уровне ответа? Или существует какая-то разница между реализациями коллекции Backbone и Ampersand, которые мне не хватает?