【问题标题】:Adding attributes to input element in Handlebars (used with Ember.JS 1.0)向 Handlebars 中的输入元素添加属性(与 Ember.JS 1.0 一起使用)
【发布时间】:2016-02-05 09:47:38
【问题描述】:

假设我有类似的东西:

{{input value=someModel }}

然后我想在输入中添加简单的required HTML 5 属性。

我该怎么做?


请注意,我尝试了以下变体但没有成功:

{{input value=someModel required }} <!-- doesn't parse -->

{{input value=someModel required='required' }} <!-- doesn't render the attribute -->

{{view Ember.TextField valueBinding=someModel 
    required='required' }} <!-- doesn't render the attribute -->

<input required {{bindAttr value=someModel}}
     /> <!-- doesn't update the model, as expected -->

更新:这个问题是针对 Ember 1.0 的。

【问题讨论】:

    标签: javascript ember.js handlebars.js


    【解决方案1】:

    我使用的是 Ember 1.5.1 版,并且 required="required" 现在似乎可以正常工作。这个标记:

    {{input class="form-control" value=firstName autofocus="autofocus" required="required"}}
    

    ...呈现这个:

    <input id="ember392" class="ember-view ember-text-field form-control" autofocus="autofocus" required="required" type="text">
    

    【讨论】:

      【解决方案2】:

      要全局添加对其他属性的支持,您可以重新打开 Ember.TextField

      http://emberjs.com/api/classes/Ember.TextField.html

      【讨论】:

      • 这太可怕了! (这不是你的错,谢谢你指点) - 知道为什么会这样吗?以及是否有办法让它对我添加的任何内容开放?
      • 并非所有浏览器都支持required,因此该框架附带了一个最小集,如果开发人员知道他们将只针对支持它的浏览器,他们可以添加其他属性。
      • 这可能是 Discourse 的主题,但实际上,我只是认为限制用户可以使用他们的标记做什么是没有意义/好处的(只要它不是代码,例如不是 Handlebars 表达式)。我猜这是库中某些设计限制的副作用,如果它是作为一种功能的这种方式,那只会增加摩擦恕我直言。
      【解决方案3】:

      首先你需要添加对 required 属性的支持:

      Ember.TextSupport.reopen({  
          attributeBindings: ["required"]  
      }) 
      

      那么在你看来:

      {{view Ember.TextField required="required"}}
      

      【讨论】:

        猜你喜欢
        • 2017-05-18
        • 2022-08-18
        • 2011-04-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-08
        • 1970-01-01
        相关资源
        最近更新 更多