2015-11-19 2 views
0

Есть ли способ использовать checkValidity() setCustomValidity() внутри ember? Например, в моем контроллере при представлении у меня есть:emberjs input checkValidity и setCustomValidity

var inpObj = this.get('name'); 
if (inpObj.checkValidity() == false) { 
    alert('ok'); 
} 

и, конечно, это мой руль код:

{{input id="name" type="text" value=name placeholder="Your Name" required="true"}} 

При подаче этого, я получаю сообщение об ошибке:

inpObj.checkValidity не является функцией

ответ

0

Вам нужно будет получить элемент HTML5 вместо строки для вызова функции checkValidity.

var inpObj = this.get('name'); // this is only a string 

Вы можете использовать JQuery вместо:

var inpObj = Ember.$('#name')[0]; 

if (inpObj.checkValidity() == false) { 
    alert('ok'); 
} 

Working demo.

+0

Solution работает! ... Я надеялся избежать использования jQuery, если это вообще возможно. Вопрос: что делает Ember. $? почему бы просто не использовать $ – Matt

+0

'Ember. $' - это еще один способ доступа к jQuery, если вы не хотите получать к нему доступ с использованием глобальной переменной '$'. Вы могли бы избежать jQuery, если бы вы создали другой компонент, который простирается от 'Ember.TextField' и интегрирует проверки достоверности внутри него, а затем распространяет информацию через действия на контроллер. –

0

Если вы хотите, чтобы избежать JQuery, вы можете установить действие на вашу кнопку отправки, которая проходит действительную проверку для вас.

<button {{action "submitForm"}}>Your Button</button> 

Тогда есть действие в вашем регуляторе,:

actions: { 
    submitForm() { 
    var inpObj = this.get('name'); 
    if(!inpObj.checkValidity()) { 
     // error handling 
     alert('ok'); 
    } else { 
     // save your data, or whatever you need to do 
     this.transitionTo('some.route'); 
    } 
    } 
}