2013-04-12 2 views
0

Я собираюсь запросить API, который возвращает встроенные объекты в ответ, поэтому я имитирую это с адаптером адаптера. Мои данные выглядит следующим образом:Модель Ember.js со встроенным объектом

App.Deal.FIXTURES = [ 
     {id: 1, name: 'Deal 1', closed_time: '2012-04-01', value_in_cents: 342345, company: { id: 1, name: 'Google' }, user: { id: 2, full_name: 'Bob Smith' } }, 
     {id: 2, name: 'Deal 2', closed_time: '2012-04-01', value_in_cents: 342345, company: { id: 1, name: 'Google' }, user: { id: 2, full_name: 'Bob Smith' } } 
] 

Вот мои модели:

App.Deal = DS.Model.extend({ 
    name: DS.attr('string'), 
    value_in_cents: DS.attr('number'), 
    closed_time: DS.attr('date'), 
    user: DS.belongsTo('App.User'), 
    company: DS.belongsTo('App.Company') 
}); 

App.User = DS.Model.extend({ 
    full_name: DS.attr('string') 
}); 

App.Company = DS.Model.extend({ 
    name: DS.attr('string') 
}); 

Я уверен в том, как получить на user и company объектов. Я вижу данные с помощью консоли:

App.Deal.find(1) 
Class {store: Class, clientId: 2, _relationshipChanges: Object, _changesToSync: Object, id: "1"…} 
__ember1365792240874: "ember329" 
__ember1365792240874_meta: Meta 
_changesToSync: Object 
_data: Object 
attributes: Object 
belongsTo: Object 
company: Object 
id: 1 
name: "Google" 
__proto__: Object 

Но я не могу сделать App.Deal.find(1).get('user'). Я что-то упускаю?

+0

Это, кажется, дубликат [этот вопрос] (http://stackoverflow.com/questions/14174921/embedded-hasmany-attribute-access-gives-typeerror -cannot-call-method-hasownpr), или, может быть, контекст очень похож – MilkyWayJoe

+0

Ah..ok. конфигурация адаптера, похоже, работает следующим образом: http://stackoverflow.com/questions/14320925/how-to-make-embedded-hasmany-relationships-work-with-ember-data/14324532#14324532 – brandonhilkert

ответ

3

Следующая установка работала:

App.Adapter = DS.FixtureAdapter.extend(); 

App.Adapter.map('App.Deal', { 
    user: {embedded: 'load'}, 
    company: {embedded: 'load'} 
}); 

App.User = DS.Model.extend({ 
    full_name: DS.attr('string') 
}); 

App.Company = DS.Model.extend({ 
    name: DS.attr('string') 
}); 

App.Deal = DS.Model.extend({ 
    name: DS.attr('string'), 
    value_in_cents: DS.attr('number'), 
    closed_time: DS.attr('date'), 
    user: DS.belongsTo(App.User, {embedded: 'load'}), 
    company: DS.belongsTo(App.Company, {embedded: 'load'}) 
}); 
Смежные вопросы