2012-12-18 34 views
0

我有一個在每次循環中的燼,工作正常,第一次顯示數據。裏面有一條if語句,它可以顯示可用的圖像,或者它會顯示一個按鈕來上傳圖像。如果我上傳了一張新圖片,我希望頁面上的項目切換爲顯示圖片,然後隱藏該按鈕。在Ember.js每個循環中刷新項目

我發現要做到這一點的唯一方法是刪除if語句,並在項目上使用一些bindattr屬性,以便可見或隱藏(儘管這迫使我在視圖模型上製作特殊字段邏輯)。我想知道是否有一些方法來刷新每個循環或循環中的特定項目?

ul.thumbnails 
    {{#each item in view.content}} 
    li.span5.thumbnail 
     {{#if item.isPlaceholder}} 
     .placeholder 
     <span class="photo-category">{{item.category}}</span> 
     <button class="btn" {{action "showCategoryFileUpload" item target="parentView"}}>Upload Photo</button> 
     {{else}} 
     <a {{action "showPhoto" item target="parentView"}} class="photo-link" href="#"> 
     <img {{bindAttr src="item.url"}} {{bindAttr class="item.islast"}} /><span class="photo-category">{{item.category}}</span> 
     </a> 
     {{/if}} 
    {{/each}} 

回答

2

嘗試Collection幫手,而不是爲了保留{{if}}幫手綁定,問題是在如果在循環運行首次條件,才檢查,收集視圖是ContainerView它創建一個視圖數組中每個項目的相關綁定。

您還可以通過執行itemViewClassBinding,如果你使用的是最新的灰燼,但使用的收集做到這一點使用each助手是更好的方法

{{#collection contentBinding="view.content"}} 
    li.span5.thumbnail 
    {{#if view.content.isPlaceholder}} 
    .placeholder 
    <span class="photo-category">{{view.content.category}}</span> 
    <button class="btn" {{action "showCategoryFileUpload" item target="view.parentView"}}>Upload Photo</button> 
    {{else}} 
    <a {{action "showPhoto" item target="view.parentView"}} class="photo-link" href="#"> 
     <img {{bindAttr src="view.content.url"}} {{bindAttr class="view.content.islast"}} />   
     <span class="photo-category">{{view.conetn.category}}</span> 
    </a> 
    {{/if}} 
{{/collection}}