0

私は、データを初めて表示するときに正常に動作するemberの各ループを持っています。その中に if ステートメントがあり、利用可能な画像を表示するか、画像をアップロードするボタンを表示します。新しい画像をアップロードする場合は、ページ上のアイテムを画像の表示に切り替えて、ボタンを非表示にします。

これを行うために私が見つけた唯一の方法は、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}}
4

1 に答える 1

2

Collectionヘルパーのバインディングを永続化するために、代わりにヘルパーを試してください{{if}}。問題は、ループが最初に実行されたときにのみ if 条件がチェックされることです。コレクション ビューはContainerView、配列内の各項目に関連付けられたバインディングを持つビューを作成します。最新の Ember を使用している場合は、ヘルパー

を使用してこれを達成することもできますが、コレクションを使用する方がよりエレガントなアプローチですeachitemViewClassBinding

{{#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}}
于 2012-12-19T11:24:53.053 に答える