2012-03-27 3 views
3

Это был долгий день, и это, вероятно, довольно просто, но как добавить атрибут имени в Ember.TextField?добавить атрибут имени в Ember.TextField?

Я хочу сделать что-то вроде этого:

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

Это работает с заполнителем, но игнорирует имя.

Любые идеи?

благодаря Рик

ответ

8

Атрибут имя не связано по умолчанию, 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); 
    } 
}); 

ОБНОВЛЕНИЕ:

Поскольку attributeBindings объявлен как concatenated property * текстовое поле можно упростить, см http://jsfiddle.net/cRhcg/:

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

* каскадное свойство не переопределить свойство расширенного объекта, но существующие значения из супер объекта сцепляются , Имеет смысл? Вот example

+0

спасибо большое pangratz. Surley это должно быть по умолчанию, поскольку вам нужно имя для тестирования? –

+0

Спасибо, pangratz! У меня такой же вопрос! +1 – Dragan

2

Это не работает, потому что Ember.TextField не предоставляет эту привязку атрибута.

От Ember.TextField

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

плюс те из Mixin:

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

Чтобы связать свойство имени, создать собственный подкласс, который добавляет 'имя' для привязки атрибутов

+0

Извините, @pangratz был быстрее :) –

-1

Если вы просто хотите указать атрибут имени, вы можете сделать это с помощью атрибутаBindings.

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

установка 'attributeBindings' через Handlebars запрещена, см. Https://github.com/emberjs/ember.js/blob/c524f3e91d3c3dfa0b9a95d0c8fbf4dc199b4ac3/packages/ember-handlebars/lib/helpers /view.js#L44-48 – pangratz

0

Это позволит решить вашу проблему. Однако я бы предложил не делать этого. Идея ember заключается в том, чтобы сохранить такую ​​информацию из DOM.

Ember.TextField.reopen({ 
    attributeBindings: ['name'] 
}); 
Смежные вопросы