我正在尝试在html选择中设置默认值,但没有成功。 我正在做这样的初始填充:
<template name="demo">
<select>
{{#each foo}}
<option>{{this}}</option>
{{/each}}
</select>
</template>
我在模型中设置了可能的选项:
Template.demo.foo = ["aaa","bbb","ccc"];
到目前为止,一切都按预期工作。
现在我正在尝试显示集合collec的行,用defaut记录的foo值(aaa或bbb或ccc)填充select。 我的理解是你必须在标签上添加“selected”。 所以我用多个嵌套块做这样的事情:
<template name="demo">
{{#each collecs}}
{{_id}}
<select>
{{#each foos}}
<option{{#if isSelected this ../this}}selected{{/if}}>{{this}}</option>
{{/each}}
</select>
{{/each}}
</template>
在模特面前:
Template.demo.foos = ["aaa","bbb","ccc"];
Template.demo.collecs = function(){
return Collec.find({});
};
Template.demo.isSelected = function(fooToCheck, record){
var rid= record._id;
var currentRecord = Collec.findOne({_id:rid});
return (fooToCheck==currentRecord.foo);
};
问题在于它不起作用。 下拉列表保持为空,生成的html代码显示如下:
" >aaa "
我已经检查了js部分,所有似乎都正常工作,真/假被充分归还。
提前感谢您的帮助。
答案 0 :(得分:0)
把手条件不能很好地内联。事实上,我不确定它们是否可以在任何地方内联工作。发生的事情是Handlebars模板引擎不理解你的html,所以它跳过它,这就是你看到'&gt; aaa'的原因。
以下代码有效。我冒昧地简化了你的isSelected功能。
<强>模板:强>
<template name="demo">
{{#each collecs}}
{{_id}}
<select>
{{#each foos}}
{{#if isSelected this ../foo}}
<option selected>{{this}}</option>
{{else}}
<option>{{this}}</option>
{{/if}}
{{/each}}
</select>
{{/each}}
</template>
<强> JavaScript的:强>
Template.demo.foos = ["aaa","bbb","ccc"];
Template.demo.collecs = function(){
return Collec.find({});
};
Template.demo.isSelected = function(fooToCheck, recordFoo){
return (fooToCheck === recordFoo);
};