次の構文を使用してレコードを作成し、すぐにストアに追加します。
store.createRecord('post', {title: "Rails is omakase"});
レコードをサーバーに正常に保存してからストアに追加する方法は何ですか?
store.createRecord が約束を返すことを期待します。非常に紛らわしいです。
次の構文を使用してレコードを作成し、すぐにストアに追加します。
store.createRecord('post', {title: "Rails is omakase"});
レコードをサーバーに正常に保存してからストアに追加する方法は何ですか?
store.createRecord が約束を返すことを期待します。非常に紛らわしいです。
ローカルストアに「潜在的な」レコードがあることは問題ではなく、保存されたレコードを表示することを目的としたリストに表示されると主張する人もいます。
そこで、保存したレコードのみを表示したい場合に使用するコンポーネントを作成しました。
app/components/each-saved.js
import Ember from 'ember';
const EachSavedComponent = Ember.Component.extend({
tagName: '',
savedRecords: Ember.computed.filterBy('records', 'isNew', false)
});
EachSavedComponent.reopenClass({
positionalParams: ['records']
});
export default EachSavedComponent;
app/templates/components/each-saved.hbs
{{#each savedRecords as |record|}}
{{yield record}}
{{/each}}
使用法
<div class="CARD">
<table class="LIST">
{{#each-saved model.users as |user|}}
<tr>
<td class="LIST-cell">{{user.name}}</td>
<td class="LIST-cell--right"><a href="" class="BUTTON">Remove</a></td>
</tr>
{{/each-saved}}
</table>
</div>
どこでも必要というわけではなく、保存されていないレコードをリストに表示したい場合がいくつかあります。
あなたが言及したことについては、RESTアダプタを介してではなく、サーバーを直接呼び出していると思います。その場合は、次のことができます。
var store = store;
$.ajax(url, {type: 'POST', success: function (savedRecord) {
var pushedRecord = store.push(App.MyModel, savedRecord);
pushedRecord.save();
});