使用以下语法创建记录,立即将其添加到 Store:
store.createRecord('post', {title: "Rails is omakase"});
有什么方法可以成功地将记录存储在服务器上,然后才将其添加到 Store 中?
我希望 store.createRecord 返回一个承诺。非常混乱。
使用以下语法创建记录,立即将其添加到 Store:
store.createRecord('post', {title: "Rails is omakase"});
有什么方法可以成功地将记录存储在服务器上,然后才将其添加到 Store 中?
我希望 store.createRecord 返回一个承诺。非常混乱。
有人可能会争辩说,在您的本地商店中拥有“潜在”记录不是问题,而是让它们出现在旨在显示已保存记录的列表中。
所以,当我只想显示保存的记录时,我制作了一个组件:
应用程序/组件/每个保存的.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;
应用程序/模板/组件/每个保存的.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();
});