我有一份“事项”清单。每件事都有一个_id和名字。
我有一个“交易”。每个事务都属于一个事物,通过transaction.matterId属性引用事物的_id。
我目前正在开发一个用户界面,允许对事务进行更改,包括更改事务所分配的事项。像这样:
Enter date:
Select a matter: (this is the culprit)
Enter the amount:
我正在使用把手生成一个Bootstrap选择输入,其中包含每个问题的选项 - 即“选择一个问题......”这可以通过把手{{#each}}块助手轻松完成。所有事项都正确显示为选项,并正确分配每个选项的值。到目前为止没问题......
但是,我想要预先选择其值与transaction.MatterId匹配的选项,因为这是一个更新屏幕。为此,我在{{#each}}块中调用了我自定义的“IfEquals”帮助器。把手模板是这样的:
<div>Matter: {{ transaction.matterId}}</div> <-- I can see the matterId here.
<div class='form-group'>
<label for="selMatter">Case</label>
<select required id="selMatter" name="matterId" class="form-control">
{{# each matters }}
<option value='{{ _id }}' {{ ifEqual _id ../transaction.matterId "selected" "" }} >{{ name }}</option>
{{/ each }}
</select>
</div>
自定义帮助程序是:
ifEqual: function (obj, value, trueString, falseString) {
return ( (obj===value) ? trueString : falseString );
}
假设第一个<div>
显示了一个transaction.MatterId为“5”。将有一个(且仅一个)选项,其值为“5”。
在把手模板中,我尝试了各种各样的可能性,试图让{{IfEqual}}正确地比较2个值。我尝试了没有“../”的transaction.matterId来查看它是否可能是一个上下文问题。没运气。我尝试使用把手子表达式(即使有自己的辅助函数)。不。
我没有在{{IfEqual}}帮助器中获得正确的值,因此,即使匹配的<option>
存在,我也无法让把手为其添加“selected”属性。
以下是我认为适合观看的地方,但我没有看到我所缺少的东西。 http://handlebarsjs.com/expressions.html
答案 0 :(得分:0)
嗯,我终于得到了它。如果有人遇到这种情况,那么这对我有用:
把手模板:
<div class='form-group'>
<label for="selMatter">Case</label>
<select required id="selMatter" name="matterId" class="form-control">
{{# each matters }}
{{{ makeOption _id ../transaction.matterId name }}}
{{/ each }}
</select>
</div>
这里是{{{makeOption}}}帮助者:
makeOption: function (optionValue, dataValue, displayText) {
myOption = "<option value='" + optionValue + "'";
if ( optionValue.toString() === dataValue.toString() )
myOption += " selected";
myOption += ">" + displayText + "</option>";
return myOption;
},