2013-12-16 3 views
0

У меня есть приложение ember с двумя моделями, пользователем и субъектом, оба из которых полагаются на api для данных. JSON вернулся не в том формате, который ожидает уголек, поэтому у меня есть пользовательский сериализатор для каждого модельноОшибка Ember.js при загрузке маршрута

var foo = { 

    'App.Subject': {'single':'subject','array':'subjects'} 

}; 

App.SubjectSerializer = DS.RESTSerializer.extend({ 
    extractSingle: function(store, type, payload, id, requestType) { 
    var p = {}; 
    p[foo[type]['single']] = payload; 
    return this._super(store, type, p, id, requestType); 
    }, 
    extractArray: function(store, type, payload, id, requestType) { 
    var p = {}; 
    p[foo[type]['array']] = payload; 
    return this._super(store, type, p, id, requestType); 
    }, 
    serializeIntoHash: function(hash, type, record, options) { 
    Ember.merge(hash, this.serialize(record, options)); 
    } 
}); 

Это прекрасно работает. Тем не менее, у меня есть подобный сериалайзер для моих пользователей модельно

var foo = { 

    'App.User': {'single':'user','array':'users'} 

}; 

App.UserSerializer = DS.RESTSerializer.extend({ 
    extractSingle: function(store, type, payload, id, requestType) { 
    var p = {}; 
    p[foo[type]['single']] = payload; 
    return this._super(store, type, p, id, requestType); 
    }, 
    extractArray: function(store, type, payload, id, requestType) { 
    var p = {}; 
    p[foo[type]['array']] = payload; 
    return this._super(store, type, p, id, requestType); 
    }, 
    serializeIntoHash: function(hash, type, record, options) { 
    Ember.merge(hash, this.serialize(record, options)); 
    } 
}); 

Когда я пытаюсь получить доступ к своим пользователям в браузере, я получаю эту ошибку:

Assertion failed: Error while loading route: TypeError: Cannot read property 'array' of undefined

Может кто-нибудь помочь?

EDIT: «тип» в функции extractArray относится к корневому свойству JSON, например, если мой JSON был

{ 
    "user": { 
    name: "xyz", 
    email: "[email protected]" 
    } 
} 

«типа» будет «пользователь».

+0

и что 'тип' в функции extractArray, когда код выполняется, помещает отладчик или журнал и видит, какое значение оно имеет. – fanta

ответ

1

mappings[type] не определено. Что такое отображения?

Кстати, есть более простой способ сделать это,

одного

p[type.typeKey] = payload; 

массив

p[Ember.String.pluralize(type.typeKey)] = payload; 
+0

Должно быть, foo, см. Править – bookthief

+1

Конечно, я сказал ему, где была его ошибка. Я спросил у него дополнительный вопрос, чтобы набрать 30 символов. – Kingpin2k

+0

Хороший, сейчас он работает, ура! – bookthief

Смежные вопросы