2015-04-14 4 views
1

Я пытаюсь создать запись «note» с createRecord. Когда я передаю его в свое действие, он правильно создает запись, но только создает атрибут «body», который я передаю, а не идентификатор или временные метки. Тем не менее, он создает эти атрибуты после обновления. Моя проблема заключается в том, что я хочу, чтобы она создавала их, как только я нажимаю кнопку «Создать», поэтому я могу сортировать по убыванию и удалять заметку, не обновляя ее каждый раз.Ember createRecord не создает id

Мой контроллер:

import Ember from "ember"; 

export default Ember.ArrayController.extend({ 
    actions: { 
    newNote: function() { 
     var body = this.get('noteCopy'); 
     var note = this.store.createRecord('note', { body: body }); 
     this.set('noteCopy', ''); 
     note.save(); 
    }, 
    deleteNote: function(id) { 
     this.store.find('note', id).then(function(note) { 
     note.deleteRecord(); 
     note.save(); 
     }); 
    } 
    } 
}); 

Мой шаблон:

{{textarea placeholder="Add a note!" value=noteCopy class='newNoteArea' 

autofocus=true}}<br> 
<button class='createNoteButton'{{action 'newNote'}} style='font-size:2em'>Save Note</button><br><br> 
<br> 
{{#each note in model}} 
    <div class="noteShow"> 
     {{note.body}}<br> 
    <img src="assets/erase.gif" alt="" class='deleteNoteButton'{{action 'deleteNote' note.id}} style='width:4em'/> 
</div> 
{{/each}} 
{{outlet}} 

Мой сервер выполняет сортировку должным образом после того, как нота создает временные метки атрибуты ... Но так как я получаю

id: null, body: "some body", created_at: undefined, updated_at: undefined

каждый раз, когда я создаю новое примечание, он не делает ничего, что должен, пока я не обновляюсь. Мне пришло в голову, что это может быть проблемой с обещаниями, но, пытаясь реализовать некоторые строки .success() и .then(), я чувствую, что это не так.

Простите меня, если это вопрос новичков, но я до сих пор совершенно новый для Ember. Любой вход оценивается. Благодаря!

+0

* Он не делает ничего, что предполагается * Что он должен делать? В качестве старта вместо того, чтобы передавать «note.id» в форме действия шаблон, просто передайте «примечание», а затем в обработчик действия, пропустите «this.store.find» и просто выполните «deleteRecord». –

+0

Можете ли вы поместить свое определение модели 'note'? – GJK

+0

См. Следующее http://stackoverflow.com/a/29018979/908842 – Kalman

ответ

0

id предоставлен вам сервером API, на который вы отправили POST. Вы можете получить id после того, как создание было успешным.

var newJob = jobController.store.createRecord('job', { 
    status: 'requested', 
    message: '', 
}); 
console.log(newJob); 

newJob.save().then(() => { 
    console.log('Job ID ', newJob.id, ' created.'); 
    }.bind(jobController), (err) => { 
    console.log(err.message); 
    }.bind(jobController) 
); 
Смежные вопросы