後使用以下語法創建一個記錄,將其添加到存儲immidiatly:如何記錄添加到存儲它保存
store.createRecord('post', {title: "Rails is omakase"});
什麼是成功地存儲在服務器上的記錄和方式只有將其添加到商店?
我希望store.createRecord返回一個承諾。很混亂。
後使用以下語法創建一個記錄,將其添加到存儲immidiatly:如何記錄添加到存儲它保存
store.createRecord('post', {title: "Rails is omakase"});
什麼是成功地存儲在服務器上的記錄和方式只有將其添加到商店?
我希望store.createRecord返回一個承諾。很混亂。
對於你提到的我猜你是直接調用服務器(而不是通過REST適配器)。如果是這樣的話,您可以:
var store = store;
$.ajax(url, {type: 'POST', success: function (savedRecord) {
var pushedRecord = store.push(App.MyModel, savedRecord);
pushedRecord.save();
});
人們可以爭辯說,在您的本地存儲具有「潛在」的記載是沒有問題的,但有他們在準備用於顯示保存在列表中顯示出來記錄。
所以,我做了一個組件使用時,我只想顯示保存的記錄:
應用程序/組件/每-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>
我不需要它到處都有,並且有幾種情況下我希望未保存的記錄顯示在列表中。
並不是所有的燼數據的全部重點。如果您已經手動保存,爲什麼要在記錄上調用保存? – Denzo
如果服務器中不存在新的東西,則會使用createRecord,但只會將其添加到商店中。由於所有這些都是在商店的內存中同步完成的,因此無需返回承諾。推送會將現有記錄添加到商店。在這兩種情況下,保存將實際轉到適配器並保持內存更改。我假設你沒有使用REST適配器,因爲你說過要先將它保存到服務器,然後將其添加到商店。你能否擴展你的用例以提供更好的答案? –
這是http://discuss.emberjs.com/t/why-does-store-createrecord-create-a-record-immediately/3161/2 – Denzo