【问题标题】:Bind attr handlebars helper ember.js with a specific value check使用特定值检查绑定 attr 车把助手 ember.js
【发布时间】:2014-06-11 05:57:22
【问题描述】:

所以我基本上需要从选择框中选择一个特定的值。

所以我想知道如何让{{bind-attr}} 表现得像这样:

        <select id="research_status" class="form-control">
            <option value=""></option>
            <option value="finalized" {{bind-attr selected a_variable="finalized"}}>Finalized</option>
            <option value="in progress" {{bind-attr selected a_variable="in progress"}}>In progress</option>
        </select>

我在文档中找不到这个(虽然我没有仔细研究它)。但是,如果有另一种更简单或更易于使用的方法,请告诉我。

我不想最终做这样的事情

        <select id="research_status" class="form-control">
            <option value=""></option>
            <option value="finalized" {{bind-attr selected=isFinalized}}>Finalized</option>
            <option value="in progress" {{bind-attr selected=isInProgress}}>In progress</option>
        </select>

我知道我们可以这样做,但我不想到处创建不必要的变量。

我正在从模型中检索它,因此最好检查该模型字段的值并在选择框中选择该特定字段(如我的第一个 sn-p 代码所示)。

【问题讨论】:

    标签: ember.js handlebars.js


    【解决方案1】:

    编辑:我忘记了 Handlebars 助手如何处理属性。所以我之前的回答是行不通的。但是bind-attr 助手不提供这种功能,并且可能在无法轻松修改的情况下具有足够的不同。我相信您最好的选择是重新创建 bind-attr 助手,仅使用您的自定义语法。您可以找到该代码here

    同样,我认为您最好只声明一个控制器属性。每个属性只需要一行:

    App.MyController = Ember.Controller.extend({
        isFinalized: Ember.computed.equal('model.state', 'finalized'),
        isInProgress: Ember.computed.equal('model.state', 'in progress')
    });
    

    【讨论】:

    • 这来自文档:如果您使用带有布尔值的 {{bind-attr}},它将添加或删除指定的属性。例如,给定这个模板。如果没有布尔值,我怎么能做到这一点,但仍然能够做我上面显示的事情。不过,我理解你的回答。
    • 那我不明白你的问题。我的代码也将添加或删除该属性。而且我没有使用布尔值,我使用了变量和字符串文字。
    • 你的回答没有错,我想知道这是否可以使用 {{bind-attr}} 帮助器来完成。
    • 其实我注意到我的回答有问题。它不会像你需要的那样工作。让我更新我的答案。
    • 我是 ember 的新手,你能给我举个例子说明你是如何处理控制器属性的吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-06
    • 1970-01-01
    • 1970-01-01
    • 2014-06-30
    • 2020-04-02
    • 1970-01-01
    • 2023-04-03
    相关资源
    最近更新 更多