我已經按照Ember.js上的PeepCode教程進行了擴展,並將其從選項卡中刪除。我還在服務器上實現了一個簡單的RESTful接口來保存更改,並使用DS.RESTAdapter。Ember.js推薦的方法從集合中刪除項目並保留爲REST
有2種relavent型號:
- TabItem的
- 標籤,上面的hasMany關係的TabItem
從教程上之後,我添加了一個簡單的刪除鏈接標籤模板:
<script type="text/x-handlebars" data-template-name="tab">
<ul id="customer-tab">
{{#each tabItem in tabItems}}
<li>
<h3><a href="#" {{ action "removeTabItem" tabItem }}>x</a> {{ tabItem.food.name }} <span>{{ money tabItem.cents}}</span></h3>
</li>
{{ else }}
<li><h3>Click a food to add it</h3></li>
{{/each}}
<li id="total">
<h3>Total <span>{{ money cents }}</span></h3></li>
</li>
</ul>
</script>
而在控件ř
App.TabController = Ember.ObjectController.extend({
removeTabItem: function(tabItem) {
var store = this.get('store');
store.transaction();
var t = store.find(App.TabItem,tabItem.get('id'));
t.deleteRecord();
this.get('tabItems').removeObject(tabItem);
store.commit();
}
});
上述控制器代碼我確實由位試驗&誤差&猜測。 「removeObject」調用似乎有必要從用戶界面中正確刪除項目,並且「deleteRecord」調用似乎是必需的,因此「commit」將導致DELETE調用服務器。
儘管控制器代碼似乎有點冗長,我懷疑我錯過了一些東西。有沒有更好的方法,可能更直接地使用「tabItem」,並使用更少的API調用?
我經歷了類似的過程去。我發現我還需要爲每個tabItem設置燈具數據中的選項卡。我看到的問題是,所有tabItems被刪除,而不是隻有一個項目。你也看到了嗎? – 2013-03-24 16:00:21
@JasonMoore我檢查過了,我從來不需要在tabItems的fixture數據中設置tab。此外,我有問題的「一半」刪除項目,數據消失,但列表項仍然存在,但我沒有與所有項目被刪除的問題。 – 2013-03-24 16:41:59
我在刪除操作中添加了一個斷點,並通過檢查'tabItem.get('tab')'夾具數據沒有定義選項卡,但動態創建的項目可以。 我想我知道你的意思與'一半'刪除項目 - 該項目被刪除,但價格仍然是吧?我想知道是否有某種訂單問題,在物品被移除之前重新計算價格。 我在另一一下表格,然後回表4(與固定數據)時也得到一個錯誤:「無法調用未定義的方法‘hasOwnProperty’」。你在桌子之間移動時也看到了嗎? – 2013-03-25 12:31:32