在每个循环中刷新Ember.js中的项目

时间:2012-12-18 16:48:39

标签: ember.js handlebars.js

我在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}}

1 个答案:

答案 0 :(得分:2)

尝试使用Collection帮助器来保持{{if}}帮助器的绑定,问题是if条件只在第一次运行循环时被检查,集合视图是{{ 1}}创建一个视图,其中包含数组中每个项目的关联绑定。

如果使用最新的ContainerView,也可以使用each帮助程序完成此操作Ember但使用集合更优雅的方法

itemViewClassBinding