2012-03-27 103 views
3

它是一个漫长的一天,这可能非常简单,但我如何添加一个名称属性到Ember.TextField?将名称属性添加到Ember.TextField?

我想要做这样的事情:

{view Ember.TextField valueBinding="your_name" placeholder="Your name" name="your_name"}} 

这适用于占位符,但忽略了名。

任何想法??

感谢 里克

回答

8

name属性默认情况下不限制,see

作为一种变通方法,您可以创建自己的TextField,看到http://jsfiddle.net/fkPzr/

App.TextField = Ember.TextField.extend({ 
    init: function() { 
     this._super(); 
     // get attributeBindings and add 'name' 
     var attributeBindings = this.get('attributeBindings'); 
     attributeBindings.pushObject('name'); 
     this.set('attributeBindings', attributeBindings); 
    } 
}); 

UPDATE

由于attributeBindings被声明为concatenated property * TextField的可以被简化,参见http://jsfiddle.net/cRhcg/

App.TextField = Ember.TextField.extend({ 
    attributeBindings: ['name'] 
}); 

*级联属性不覆盖延长的对象的属性,但是从超对象的现有值被级联。说得通?这是一个example

+0

非常感谢pangratz。 Surley这应该是默认的,因为你需要名称进行测试? – 2012-03-28 09:06:02

+0

谢谢pangratz!我有同样的问题! +1 – Dragan 2014-02-12 12:49:45

2

它不起作用,因为Ember.TextField不公开此属性绑定。

从Ember.TextField

attributeBindings: ['type', 'value', 'size'], 

加上从混入的那些:

attributeBindings: ['placeholder', 'disabled', 'maxlength'], 

要绑定的name属性,创建自己的子类,增加了 '名' 的属性绑定

+0

对不起,@ pangratz更快:) – 2012-03-27 17:56:32

-1

如果你简单地想要指定一个名称属性的选项,你可以使用attributeBindings来完成。

{view Ember.TextField valueBinding="your_name" placeholder="Your name" attributeBindings="name" name="your_name"}} 
+0

不允许通过Handlebars设置'attributeBindings',请参阅https://github.com/emberjs/ember.js/blob/c524f3e91/d3c3dfa0b9a95d0c8fbf4dc199b4ac3/packages/ember-handlebars/lib/helpers /view.js#L44-48 – pangratz 2012-03-28 09:25:22

0

这将解决您的问题。 但是,我建议不要这样做。 ember背后的想法是将诸如此类的信息保存在DOM之外。

Ember.TextField.reopen({ 
    attributeBindings: ['name'] 
}); 
相关问题