2014-01-10 48 views
0

我目前正在研究可重用視圖,更具體的新聞訂閱視圖。在視圖中創建和查找記錄

這個觀點的全部內容當然是讓訪問者註冊我們的通訊,爲此我創建了一個NewletterSubscriber模型。該視圖由一個輸入字段和一個按鈕組成,在我的視圖中觸發以下操作。

actions: 
    subscribe: -> 
     subscriber = @store.createRecord('newsletterSubscriber') 
     subscriber.set('email', @get('email')) 
     subscriber.save() 

這會產生以下錯誤。

Uncaught TypeError: Cannot call method 'createRecord' of undefined 

這表明商店在我的視圖中不可用,那麼什麼是適當的解決方案呢?

我想過在我的應用程序控制器中創建一個方法,並讓subcibe按鈕觸發該控制器中的操作。不過,我不想分裂這樣的代碼。

這裏最優雅的解決方案是什麼?

回答

0

你不應該試圖在視圖層做到這一點。你應該在主動路線上採取行動。

但我不想分裂這樣的代碼。

你應該拆分代碼。這就是Ember的MVC的工作方式。

+0

因此,這意味着我需要在所有路線中創建我決定使用此視圖的行爲?這會導致很多重複的代碼。我不認爲你有分裂的代碼點,我不想從視圖分裂代碼,因爲我覺得它是屬於一起的。 – MartinElvar

+1

該動作也可以在任何父路由上定義 - 我通常在ApplicationRoute上放置這樣的動作,以便可以從任何視圖觸發它們。如果您希望爲這種類型的視圖重新使用控制器子類,您也可以將操作放在控制器上(並從中訪問)。然後,您可以使用'{{render「訂閱者訂閱}}或類似的東西將該視圖/控制器對插入到任何模板中。 –

+0

謝謝尼克,這就是我一直在尋找的東西!請讓它成爲一個答案。 :) – MartinElvar