2013-04-14 43 views
2

以下save函數提交整個商店。我怎樣才能提交thisthis.commit();不起作用。單個對象的commit()

app.js

App.UserController = Ember.ObjectController.extend({ 
    save: function() { 
    this.get('store').commit(); 
    } 
}) 

回答

1

您可以創建一個交易中,記錄添加到它,然後提交(或回滾)的交易:

startEditing: function() { 
    this.transaction = this.get('store').transaction(); 
    this.transaction.add(this.get('content'); 
}, 

save: function() { 
    this.transaction.commit(); 
} 
+2

除此之外,設置提交後'this.transaction'爲null可能是個好主意。 –

+0

@FinnMacCool我同意。下面是我編寫的一個示例項目中的一個控制器,它遵循以下模式:https://github.com/dgeb/ember_data_example/blob/master/app/assets/javascripts/controllers/contact_edit_controller.js –

+0

有時候我遇到了這種方法的問題,特別是用'rollback'。我現在在'Route'中使用'this.get('store.currentTransaction')。commit()//或.rollback()',因此我沒有任何問題。這樣我就不必從商店獲得一個事務實例,或者有一個方法來啓動一個事務。 – MilkyWayJoe