2013-12-17 2 views
2

Я запускаю Ember Data 1.0.0 с Ember 1.3.0.Как сохранить изменения на связанных моделях в Ember Data

У меня есть эти данные:

{ 
    "product": { 
    "id": 185588, 
    "name": "USB MIDI Adapter", 
    "images":["imageid1", "imageid2"....] 
    }, 
    "images": [ 
    { 
     "id": "imageid1", 
     "url": "google.com" 
    }, 
    { 
     "id": "imageid2", 
     "url": "google.com2" 
    } 
    ] 
} 

И эти модели:

App.Image = DS.Model.extend({ 
    url: DS.attr('string') 
}); 

App.Product = DS.Model.extend({ 
    name: DS.attr('string'), 
    images: DS.hasMany('Image') 
}); 

В моем шаблоне у меня есть формы редактирования, чтобы изменить URL на соответствующих изображениях:

<form {{action save on="submit"}}> 
    {{input type="text" value=name}} 

    {{#each images}} 
    * {{input type="text" value=url}}<br> 
    {{/each}} 

    <button type="submit">Save</button> 
    </form> 

Запасное действие:

save: function() { 
    var product = this.modelFor('productEdit'); 
    product.save(); 
    this.transitionTo('product', product); 
} 

Проблема заключается в том, что действие сохранения только сохраняет продукт (продукт PUT), но не изменения, внесенные в URL-адреса изображений. Связывание модели отлично работает, когда я изменяю url на изображениях, gui обновляется по мере необходимости, но PUT не отправляется, как следует.

Как сохранить изменения изображения?

ответ

2

Вам необходимо либо вызвать сохранение в каждой записи, либо вызвать сохранение на записи (который будет выполнять итерацию и сохранение), либо вы можете переопределить сериализатор (serializeIntoHash), чтобы вставить изображения в сохранение продукта.

records.forEach(function(record){ 
    if(record.get('isDirty')) record.save(); 
}); 
+0

Можете ли вы привести пример для одного из решений? Я новичок в Ember (данные) и не знаю, как это сделать :) – Christoffer

+0

http://emberjs.jsbin.com/OxIDiVU/42/edit – Kingpin2k

+0

Спасибо, но я не понимаю, я не вижу никаких отношений и ничего особенно о функции сохранения. Не могли бы вы объяснить? – Christoffer

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