我目前有一个模板助手,用于根据某些逻辑设置表格行的颜色。帮助者需要几个字段才能确定。
<template name="files">
.
.
<thead>...</thead>
<tbody>
{{#each files}}
<tr class="status" style="background-color:{{getStatusColor deleted_on changed_on created_on}}">
<td>{{_id}}</td>
<td>{{created_on}}</td>
<td>{{changed_on}}</td>
<td>{{deleted_on}}</td>
</tr>
{{/each}}
</tbody>
(缩写)JS:
Template.files.helpers({
/* returns background color for row based on file properties */
getStatusColor: function(deleted_on, changed_on, created_on) {
if(deleted_on)
return foo...
if(changed_on)
return bar...
}
});
这很好用,但我需要传递每个单独的属性似乎有点俗气。是否有更简洁的方法来传递整个对象,并从帮助器中引用属性?有点像:
<template name="files">
.
.
<thead>...</thead>
<tbody>
{{#each files}}
<tr class="status" style="background-color:{{getStatusColor this}}">
<td>{{_id}}</td>
<td>{{created_on}}</td>
<td>{{changed_on}}</td>
<td>{{deleted_on}}</td>
</tr>
{{/each}}
</tbody>
并在助手中引用属性,如下所示:
Template.files.helpers({
/* returns background color for row based on file properties */
getStatusColor: function(obj) {
if(obj.deleted_on)
return foo...
etc.
}
});
我理解这会让帮助者需要更多地了解有问题的数据对象,但是如果可能的话,我很好奇。
P.S。我对Meteor很新,要温柔。
答案 0 :(得分:0)
你刚回答了自己的问题。如果您在this
循环内传入each
,它将传入整个对象。
在模板中:
{{#each files}}
<tr class="status" style="background-color:{{getStatusColor this}}">
<td>{{_id}}</td>
<td>{{created_on}}</td>
<td>{{changed_on}}</td>
<td>{{deleted_on}}</td>
</tr>
{{/each}}
在client.js文件中:
Template.files.helpers({
/* returns background color for row based on file properties */
getStatusColor: function(file) {
if(file.deleted_on)
return foo...
etc.
}
});