0

使用以下语法创建记录,立即将其添加到 Store:

store.createRecord('post', {title: "Rails is omakase"});

有什么方法可以成功地将记录存储在服务器上,然后才将其添加到 Store 中?

我希望 store.createRecord 返回一个承诺。非常混乱。

4

2 回答 2

1

有人可能会争辩说,在您的本地商店中拥有“潜在”记录不是问题,而是让它们出现在旨在显示已保存记录的列表中。

所以,当我只想显示保存的记录时,我制作了一个组件:

应用程序/组件/每个保存的.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>

我不需要在任何地方使用它,在某些情况下我确实希望未保存的记录显示在列表中。

于 2016-09-08T22:58:25.337 回答
0

对于您提到的内容,我猜您是直接调用服务器(而不是通过 REST 适配器)。如果是这种情况,您可以:

var store = store;
$.ajax(url, {type: 'POST', success: function (savedRecord) {
  var pushedRecord = store.push(App.MyModel, savedRecord);
  pushedRecord.save();
});
于 2013-10-29T02:57:46.370 回答