使用以下语法创建记录,将其添加到Store immidiatly:
store.createRecord('post', {title: "Rails is omakase"});
在服务器上成功存储记录的方法是什么,然后才将其添加到商店?
我希望store.createRecord返回一个promise。非常混乱。
答案 0 :(得分:1)
有人可能会争辩说,在本地商店中拥有“潜在”记录不是问题,而是将它们显示在用于显示已保存记录的列表中。
所以,当我只想显示已保存的记录时,我制作了一个组件:
应用/组件/每-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;
应用/模板/组件/每-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>
我不需要它到处都有,有些情况下我希望未保存的记录显示在列表中。
答案 1 :(得分:0)
对于你提到的内容,我猜你是直接调用服务器(而不是通过REST适配器)。如果是这种情况,您可以:
var store = store;
$.ajax(url, {type: 'POST', success: function (savedRecord) {
var pushedRecord = store.push(App.MyModel, savedRecord);
pushedRecord.save();
});