2015-06-12 58 views
0

可以說我們在應用程序中爲存儲庫建模。我們希望能夠在/ repos /上看到我們所有的回購。重複使用兩條路線的餘燼控制器,但預先在其中一條路線上填充模型的一部分

我們可以在/ repos/create中創建一個回購。在我們的模型中,回購有一個所有者(用戶),沿着這條路線走,我希望我的create.hbs模板中的第一個表單字段能夠選擇一個用戶。

但是,通過在/ users/userId/repos上查看用戶,然後可能是/ users/userId/repos /創建路徑來創建回購也可能有意義。這裏的區別在於我的表單的第一個字段將會預先填充用戶。

我知道我可以在我的路線,指定此重複使用相同的控制器:

controllerName: 'repos/create' 

(你會餘燼生成的語句/把這個路線在我的文件夾結構的地方是,這個複雜路線?)

但是,我將如何將用戶傳遞到回購/創建控制器?

+0

不是一個真正的答案,所以添加一條評論:根據我自己的經驗,嘗試重新使用控制器/路由並不值得。最終你最終需要在每一個自定義行爲,你必須撤消你所做的所有工作。我可以推薦你分別創建它們嗎?然後,如果你真的想要一些共享的行爲,並且你已經注意到很多代碼重疊,創建一個Mixin,並且混合它。 –

+2

我建議你使用表單的可重用組件。如果您閱讀準備使用ember 2.0,您可能只想使用三元組(路由,控制器(僅用於處理路由模板),模板)以及很多可重用組件。 Triples很快成爲可路由的組件。 – artych

+0

你有一個更詳細的關於這個位於燼2.0 @Artych的鏈接嗎?他們從MVC轉移到模型路由組件服務的這一部分? – Knightsy

回答

0

@Artych的評論提供了目前完成此操作的最佳方法,因此可以對此進行擴展。

最後,我創建了一個repo-create組件,該組件可以傳遞或不傳遞用戶對象。然後可以在組件本身的邏輯中設置處理預填充內容的邏輯。

之後,這只是在/repos/create.hbs/user/repos/create.hbs這兩個組件上都有單行模板的情況。

我再接着用我的用戶作爲我的路線/用戶/回購/ create.js路徑模型,並將它傳遞給該組件在我的模板

{{repo-create user=model}} 

用這種方法我避免的方法在控制器上做任何明確的事情,然後移動到Ember 2.x將不會很痛苦。

相關問題