我在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}}
答案 0 :(得分:2)
尝试使用Collection
帮助器来保持{{if}}
帮助器的绑定,问题是if条件只在第一次运行循环时被检查,集合视图是{{ 1}}创建一个视图,其中包含数组中每个项目的关联绑定。
如果使用最新的ContainerView
,也可以使用each
帮助程序完成此操作Ember但使用集合更优雅的方法
itemViewClassBinding