在Meteor项目中,我有一组文档,可以有两种格式之一。为简化起见,给定文档可能具有type
属性或label
属性。我想显示这是一个多选元素,使用它们识别它们的任何属性。
这是一个有效的例子:
HTML
<body>
{{> test}}
</body>
<template name="test">
<select name="elements" size="2">
{{#each elements}}
<option value="{{id}}">{{id}}: {{type}}{{label}}</option>
{{/each}}
</select>
</template>
的JavaScript
Template.test.helpers({
elements: function () {
return [
{ id: 1, type: "type" }
, { id: 2, label: "label" }
]
}
})
这很愉快地显示:
1: type
2: label
然而,这是一种简化。我想要显示的实际数据比这更复杂。我宁愿不将所有连接逻辑放入HTML模板中。我更愿意调用JavaScript函数,将其传递给当前文档,并获取要显示的字符串。类似的东西:
<option value="{{id}}">{{functionToCall_on_this}}</option>
我怎么能用Meteor做到这一点?
答案 0 :(得分:1)
回答我自己的问题,我发现我可以更改我的模板以包含这一行...
<option value="{{id}}">{{id}}: {{string}}</option>
我的帮助者条目使用map
方法:
Template.test.helpers({
elements: function () {
data = [
{ id: 1, type: "type" }
, { id: 2, label: "label" }
]
return data.map(function (item, index, array) {
var string = item.type || item.label
return { id: item.id, string: string }
})
}
})