gpt4 book ai didi

templates - 将变量传递给 Ember.js 中的 Handlebars 部分

转载 作者:行者123 更新时间:2023-12-04 17:35:01 25 4
gpt4 key购买 nike

我想做的应该相当简单。
我想将变量传递给部分以实现可重用性。

我想做这样的事情:

<form {{action login content on="submit"}}>
<fieldset>
{{partial 'components/field-email' label="Email" fieldname="email" size="full"}}
[...]
</fieldset>
</form>

而不是这样做:
<form {{action login content on="submit"}}>
<fieldset>
<div {{bind-attr class=":field :email size"}}>
<label {{bind-attr for=fieldname}}>{{label}}</label>
{{input type="email" id=fieldname name=fieldname valueBinding="email" placeholder=label}}
</div>
[...]
</fieldset>
</form>

来自 Rails,我希望这能正常工作,但似乎我不能(不知道如何)将变量传递给部分。我查看了“包含模板部分”的所有方法:
  • 部分
  • 查看
  • 渲染

  • 对我有用的是使用 View 。但我认为这太过分了。我只需要单独的子模板以实现可重用性和可读性,无需更改上下文或指定此处需要的 Controller 。

    编辑:

    我还尝试将此部分用作组件:
    {{field-email type="email" id="email" name="email" valueBinding="email" placeholder=label size="full"}}

    它适用于除 valueBinding 之外的所有内容。

    我想还值得一提的是,我有一个路由设置,其中包含在我的 AuthController 上调用 login 的操作:
    App.LoginRoute = Ember.Route.extend
    model: -> Ember.Object.create()
    setupController: (controller, model) ->
    controller.set 'content', model
    controller.set "errorMsg", ""
    actions:
    login: ->
    log.info "Logging in..."
    @controllerFor("auth").login @

    如果所有标记都在登录模板中,则整个过程都可以工作,但如果我尝试将其与部分、组件等分开,则整个过程都会失败。

    一定有我没看到的东西......

    最佳答案

    您应该使用 component在这种情况下。

    如果您正确设置了模板(组件/字段电子邮件),您可以这样使用:

    {{field-email label="Email" fieldname="email" size="full"}}

    如果您定义组件,则可以设置 html 组件属性。根据您的示例,它可能是:
    App.FieldEmailComponent = Ember.Component.extend({
    classNames: ['size'],
    classNameBindings: ['email', 'field'],
    field: null,
    email: null

    });

    示例: http://emberjs.jsbin.com/hisug/1/edit

    关于templates - 将变量传递给 Ember.js 中的 Handlebars 部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23521671/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com