2013-05-25 39 views
2

假設我想展示TOP3用戶:種類名人堂和恥辱。數據來自兩種不同的資源。視圖和模板是相同的。相同的模板,查看但來自不同控制器的數據 - 查看,控制 - 使用哪一個?

我想知道我應該使用哪個塊助手。視圖?控制,或者也許用渲染(一個實例,我知道,我知道)做一些魔術,以及我如何定製視圖,爲其提供一些數據。

下面的解決方案如下:

<div id="top3" class="row"> 
    {{view App.Top3View controllerBinding="controllers.top" label="Hall of Fame" blankState="Wanna be here? Be 
    nice to other people!"}} 

    {{view App.Top3View controllerBinding="controllers.loser" label="Hall of Shame" blankState="No one here!"}} 
</div> 

正如你所看到的,我想提供一些數據來定製它。

// top3.handlebars 
<h2>{{view.label}}</h2> 
{{#if controller.content}} 
<ul> 
    {{#each user in controller.content}} 
    <li> 
    <img {{bindAttr src="user.gravatar" title="user.name"}} /> 
    </li> 
    {{/each}} 
</ul> 
{{else}} 
<p>{{view.blankState}}</p> 
{{/if}} 

App.Top3View = Em.View.extend 
    classNames: ['col-span-6'] 
    templateName: 'top3' 

我想知道標籤應該從哪裏來?也許它應該屬於一個控制器?我想知道這是否應該用Ember編寫?

請分享您的想法。

回答

1

我想知道我應該使用哪個塊助手。視圖?控制,也許做一些魔術渲染

不知道有一個正確的或錯誤的答案在這裏。一般來說,我會用最簡單的解決方案,可以工作,所以視圖助手是正確的開始。像內置的燼視圖(Ember.TextField等),您的TOP3視圖非常簡單。由於它不需要維護自己的狀態或包含任何業務邏輯,因此不需要它擁有自己的控制器。

以及我如何定製視圖並提供一些數據。我想知道標籤應該從哪裏來?也許它應該屬於一個控制器?

兩者都可以,只要取決於你期望它們來自哪裏。使用視圖屬性是您期望在模板中定義的事物的可靠選擇。因此,無論是否包含視圖,都可以像在示例中那樣對值進行硬編碼,或者將它們綁定到類似labelBinding=controllers.top.label之類的東西。如果這些屬性是總是將在控制器中可用,那麼在top3.handlebars中將{{view.label}}替換爲{{label}}也許是有意義的。這就是說我認爲你的視圖屬性解決方案是最優雅的。

我想知道這是否應該寫在Ember中?

是的,我認爲你說得對。