2016-01-23 2 views
0

Я хочу сделать простое сравнение 2 электронных писем.Значения и значения углового контроллера отличаются

Мне любопытно, как данные синхронизируются между контроллером и моделями. Я приложил скриншот, где вы можете разделить выходы и фактические значения вида/модели.

Difference between the controller values and model values

ng-keydown="equal(newNote.email)" используется на поле ввода.

  • В чем причина такого поведения?
  • Есть ли какой-то ожидающий цикл $ digest под капотом Angular?
  • Как я могу сделать эту работу?

Заранее благодарен!

+0

Можете ли вы опубликовать jsfiddle? –

+0

было бы хорошо видеть, как вы регистрируете значения ... – eesdil

+0

@eesdil Я регистрировал значения с помощью параметра 'ng-keydown =" equal (newNote.email) "' в поле ввода confirmEmail. Таким образом, назовем равным fn. Но я понял, что изменение ** ngKeydown ** на ** ngKeyup ** исправляет проблему. –

ответ

0

Я думаю, что вы печатаете (console.log) значения в событии изменения, и оно печатает старое значение.

Вы можете использовать Бодрствующего для сравнения значений

$scope.watch('$scope.email2', function(oldval, newval){ 
     if ($scope.email1 == newval){ 
       dosomething(); 
     } 
}); 

Или вы можете использовать нг-KeyUp как этот

<input type='text' ng-model='email2' ng-keyup='validate_email()' /> 

и контроллер

$scope.validate_email = function(){ 
    if ($scope.email1 == newval){ 
     dosomething(); 
    } 
} 
+0

Это действительно дало мне правильный результат в журнале, но странным образом - только после 2 изменяя значение поля. Я имею в виду, что наблюдатель был вызван после двух циклов дайджеста, которые я предполагаю. :) –

+0

Я обновил свой ответ, посмотрю, помогает ли он –

+0

Ну, да, это работает, поскольку я узнал себя в комментариях выше. Однако, чтобы принять это в качестве ответа, я хотел бы знать закулисный процесс, почему именно это работает. :) –

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