2013-03-26 61 views
0

我有一個表單並處理我的路由器中的提交代碼。我的模板都有這樣的:根據記錄保存修改模板

{{#if isSaving}} 
     Saving... 
    {{else}} 
    <form> 
     inputs... 
    </form> 
    {{/if}} 

我在路由器中保存的代碼是這樣(Ctrl爲控制器):

events: { 
    saveCompany: function(record, ctrl){ 
     if (!record.get('isDirty')) return; 
     ctrl.set('isSaving', true); 
     record.one('didUpdate', this, function() { 
      ctrl.set('isSaving', false); 
     }); 
     record.get('transaction').commit(); 
    }, 

當用戶點擊提交「保存...」正確顯示和隱藏更新完成時。但我已經在我的模型定義中處理了didCreate,DidUpdate等 - 通過顯示一些彈出窗口,但我仍然希望能夠防止用戶在保存數據時擺弄我的窗體,這就是爲什麼我使用「record.one( ...)」。與我的方式相比,以更「通用」的方式做到這一點的最佳方式是什麼?

+1

爲什麼不把控制器綁定到記錄上的'isSaving'? – 2013-03-26 11:42:25

+0

我試着向我的控制器添加「isSavingBinding:'content.isSaving'」,但我得到「不能將set('isSaving')委託給'content'... undefined」。控制器的內容與「contentBinding:'controllers.companies.firstObject',」綁定。想法? – Marin 2013-03-26 13:31:48

+0

哦,我明白了,必須先在控制器上明確設置「isSaving」。謝謝 – Marin 2013-03-26 13:36:04

回答

1

如果您的控制器是Ember.ObjectController,您已經可以透明地訪問content上的屬性。如果content是您正在觀察的記錄,那麼您只需在控制器上觀察isSaving,而無需任何其他代碼,綁定或您有什麼。

+0

的確,謝謝。 – Marin 2013-03-26 13:42:02