我的控制器上有一个属性,我们称之为showTheStuff
,我的模板中有一个{{#each}}
帮助器。现在,我只是明确地设置属性。
在该列表中,我想根据showTheStuff
的值有条件地呈现或不呈现某些标记,但如果我使用{{#unless}}条件,则它不起作用。
http://emberjs.jsbin.com/jarapabela/1/
我如何让它工作? 在我的代码中,它不适用于{{#unless}},但如果我切换属性并使用{{#if}},它确实有效。还有其他人经历过这个吗?
我正在使用Ember 1.6。
控制器:
export default Ember.ArrayController.extend({
hideDeleteButton: true,
actions: {
deleteComment: function(comment) {
comment.destroyRecord();
this.removeObject(comment);
}
}
});
模板: 模板是在另一个模板中呈现的模态组件。打开它的{{#link-to}}通过传递一组注释传入。该属性在{{#each}}之外生效,但在其中必须是未定义的,因为即使尝试在第一个单元格中输出它,渲染时也不会显示任何内容。
<table class="table table-striped table-condensed">
<thead>
<tr>
<th>Comments</th>
{{#unless hideDeleteButton}}
<th></th>
{{/unless}}
</tr>
</thead>
<tbody>
{{#each}}
<tr>
<td>
{{hideDeleteButton}}
<br>
{{comment}}
</td>
<td>
{{createdByResource}}{{hideDeleteButton}}
</td>
{{#unless hideDeleteButton}}
<td class="text-center">
{{confirm-delete-button action="deleteComment" param=this}}
</td>
{{/unless}}
</tr>
{{/each}}
</tbody>
</table>
答案 0 :(得分:2)
@ Kingpin2k让我朝着正确的方向前进,而jsbin我认为并不完全符合我的实际代码。问题是我的hideDeleteButton属性实际上并不知道,因为它迭代传入的模型。
但是,如果我在引用属性时指定controller
,它就可以工作!
{{#unless controller.hideDeleteButton}}
<td class="text-center col-md-1">
{confirm-delete-button action="deleteComment" param=this}}
</td>
{{/unless}}
答案 1 :(得分:1)
确保为{{#each}}块提供一些上下文。
示例:{{#each object in model}}或新语法:{{#each model as | object |}}
这应该允许你引用hideDeleteButton而不使用&#34; controller.hideDeleteButton&#34;
我假设hideDeleteButton是您控制器上的属性,其余属于您模型的属性:
{{#each model as |object|}}
<tr>
<td>
{{hideDeleteButton}}
<br>
{{object.comment}}
</td>
<td>
{{object.createdByResource}}{{hideDeleteButton}}
</td>
{{#unless hideDeleteButton}}
<td class="text-center">
{{confirm-delete-button action="deleteComment" param=object}}
</td>
{{/unless}}
</tr>
{{/each}}