将属性添加到Handlebars中的input元素(与Ember.JS 1.0一起使用)

Mel*_*igy 8 javascript handlebars.js ember.js

假设我有类似的东西:

{{input value=someModel }}
Run Code Online (Sandbox Code Playgroud)

然后我想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 -->
Run Code Online (Sandbox Code Playgroud)

更新:这个问题适用于Ember 1.0.

Joh*_*ika 8

我正在使用Ember版本1.5.1和required ="required"似乎现在工作正常.这个标记:

{{input class="form-control" value=firstName autofocus="autofocus" required="required"}}
Run Code Online (Sandbox Code Playgroud)

......呈现这个:

<input id="ember392" class="ember-view ember-text-field form-control" autofocus="autofocus" required="required" type="text">
Run Code Online (Sandbox Code Playgroud)


Tre*_*cki 5

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

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

  • 这太可怕了!(这不是你的错,感谢你的指点) - 任何想法为什么会这样?以及是否有办法让它为我添加的任何东西开放? (3认同)
  • 这可能是Discourse的主题,但实际上,我认为限制用户可以对其标记做什么没有任何意义/好处(只要它不是代码,例如不是Handlebars表达式).我猜这是图书馆中某些设计限制的副作用,如果它意味着这种方式作为一个功能,那只会增加摩擦恕我直言. (2认同)

小智 5

首先,您需要添加对必需属性的支持:

Ember.TextSupport.reopen({  
    attributeBindings: ["required"]  
}) 
Run Code Online (Sandbox Code Playgroud)

然后在你看来:

{{view Ember.TextField required="required"}}
Run Code Online (Sandbox Code Playgroud)