2014-11-04 4 views
0

У меня есть эта установка:Ассоциирования записи с Ember данными

App.MyModel = Em.Model.extend({ 
    someValue: DS.attr('string'), 
    parent : DS.belongsTo('mymodel',{async:true, inverse:'rooms'}), 
    rooms : DS.hasMany('mymodel', {async:true, inverse:'parent'}) 
}); 

App.MyRoute = Em.Route.extend({ 
    model:function(params){ 
    var parent = this.store.find('mymodel', params.parent_id); 
    return this.store.createRecord('mymodel',{parent:parent}); 
    } 
}); 

params.parent_id имеет идентификатор я хочу, так find() должен вернуть правильную запись.

Затем someValue получает привязку в поле ввода шаблона и после ввода вызывается действие create.

App.MyController = Ember.ObjectController.extend({ 
    actions:{ 
    create:function(){ 
     this.get('model').save(); 
    } 
    } 
}); 

Но когда данные отправить на сервер, только someValue имеет правильные данные, parent является null.

Я не знаю, является ли ошибка в определении модели или в том, как я устанавливаю отношения.

Как правильно установить отношения по записям?

ответ

0

Обещания find следует разрешить действительному объекту.

Но это не сработало при использовании, как в вопросе.

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

model: function(params){ 
    return this.store.createRecord('mymodel', { 
    'parent': this.store.getById('mymodel', params.parent_id) 
    }); 
} 

Это работает, потому что маршрут, из которого я пришел, уже загружен родителем.

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