Meteor 中的三元运算符

Ternary operators in Meteor

我正在使用 Meteoris 处理我的应用程序。我在表格中有这种情况。这是一个编辑视图,我只显示我在此处拥有的 17 个字段中的两个:

<label for="name" class="control-label">Name *</label>
<input type="text" id="name" value="{{profile.name}}" placeholder="Name" class="form-control">
<label for="acctType" class="control-label">Account Type</label>
<select id="acctType" placeholder="Name" class="form-control">
    <option></option>
    <option value="1" {{(profile.acctType == 1) ? 'selected="selected"' : ""}}>Free</option>
    <option value="2" {{(profile.acctType == 2) ? 'selected="selected"' : ""}}>Paid</option>
</select>

我有一个名称字段和一个帐户类型字段。对于帐户类型,我将数值存储在 Mongo 数据库中。当我尝试检查这样的东西时,好的,我是一名 PHP 开发人员,在 PHP 中我这样做:

<label for="name" class="control-label">Name *</label>
<input type="text" id="name" value="<?php echo $profile_name; ?>" placeholder="Name" class="form-control">
<label for="acctType" class="control-label">Account Type</label>
<select id="acctType" placeholder="Name" class="form-control">
    <option></option>
    <option value="1"<?php echo ($profile_acctType == 1) ? ' selected="selected"' : ""; ?>>Free</option>
    <option value="2"<?php echo ($profile_acctType == 2) ? ' selected="selected"' : ""; ?>>Paid</option>
</select>

我遇到了以下错误。当我在 "{ 之间没有给出任何 spaces 时,我得到:

While building the application:
client/views/users/profile.html:42: Expected space
...    <option value="1"{{(profile.acctType ...

当我尝试给出 space 时,我得到了这个错误:

While building the application:
client/views/users/profile.html:42: Expected IDENTIFIER
... <option value="1" {{(profile.acctType ==...

您对解决此问题有何建议?

你不能在模板中使用 {{#if key==val}} 但你可以这样做来解决你的问题:

  1. 在会话中设置您的个人资料数据 Session.set("profile_acctType", 2),您可以在获取用户个人资料时在模板助手中指定它。
  2. 当 "yourTemplate" 被渲染时 select 值:

    Template['yourTemplate'].rendered = function(){ $("#acctType").val(Session.get("profile_acctType")); }

有了关于您的最终目标的更多信息,我可以做更多的事情eloquent,但这里有一个选择

Template.blah.helpers({
    isAccountType: function (acctType) {
        if (user.profile.acctType === acctType) return 'selected'
    }
});
<option value="1" {{isAccountType 1}}>Free</option>

好的,谢谢你的回答。我所做的是:

Template.blah.helpers({
    getSelected: function (acctType, currentValue) {
        if (currentValue == acctType) return 'selected'
    }
});

在表格中,我是这样做的:

<option value="1" {{getSelected profile.acctType "1"}}>Free</option>
<option value="2" {{getSelected profile.acctType "2"}}>Paid</option>

做了一个通用的助手。可以帮助某人。 :)