2014-11-25 4 views
1

У меня есть шаблон, который служит страницей регистрации пользователя. У него есть электронная почта, пароль, подтверждение пароля, имя и фамилия. И тогда есть кнопка, которая должна вызвать действие, определенное в контроллере. Шаблон handlebars выглядит примерно так.Свойство контроллера не отображается на шаблоне

<div class="well"> 

    <form role="form"> 
     <div class='form-group'> 
      {{input type='email' class='form-control' placeholder='E-Mail' value=email}} 
     </div> 

     <div class='form-group'> 
      {{input type='text' class='form-control' placeholder='First Name' value=password}} 
     </div> 

     <div class='form-group'> 
      {{input type='text' class='form-control' placeholder='Last Name' value=password}} 
     </div> 

     <div class='form-group'> 
      {{input type='password' class='form-control' placeholder='Password' value=password}} 
     </div> 

     <div class='form-group'> 
      {{input type='password' class='form-control' placeholder='Password Confirmation' value=passwordConfirmation}} 
     </div> 

     <button {{action 'signUp'}} class='btn btn-lg btn-default'>Sign Up</button> 
    </form> 

</div> 

Теперь я хочу, чтобы сделать ошибку на этой же странице, когда есть ошибка проверки (например, отсутствует адрес электронной почты). Для этого у меня есть основные правила проверки в моем действии и, кроме того, определено другое свойство, называемое signUpError. Мой контроллер выглядит примерно так.

Postr.SignUpController = Ember.Controller.extend({ 
    actions: { 
     signUp: function(){ 

      var email = this.get('email'); 
      var password = this.get('password'); 
      var passwordConfirmation = this.get('passwordConfirmation'); 
      var firstName = this.get('firstName'); 
      var lastName = this.get('lastName'); 

      console.log(email); 

      if(!email || !password || !passwordConfirmation || !firstName || !lastName){ 
       this.set('signUpError ', 'One or more field is missing!'); 
      } 
      if(password !== passwordConfirmation){ 
       this.set('signUpError ', 'Password does not match!'); 
      } 

      //console.log(this.get('signUpError')); 
     } 
    }, 

    signUpError: '' 
}); 

И в верхней части формы я добавляю новый HTML-элемент для визуализации ошибки.

{{#if signUpError}} 
    <div class="alert alert-danger"> 
     {{signUpError}} 
    </div> 
{{/if}} 

Проблема заключается в том, что ... Я не могу получить signUpError, чтобы показать: | есть идеи?

Спасибо, ребята.

+2

Не уверен, если это проблема, но в вашем 'this.set ('signupError') у вас есть пространство в конце. Может быть, это исправит проблему? –

ответ

5

Проблема заключается в том, что ваш this.set ('signupError') имеет пробел, поэтому вы фактически не устанавливаете свойство правильно.

Я воссоздал проблему в jsbin, и без пробела проблема работает нормально.

this.set('signUpError', 'Password does not match!');

http://emberjs.jsbin.com/hicefefibe/1/

+0

HOLY MACARONI СПАСИБО! – denniss

Смежные вопросы