2013-06-13 2 views
0

Вот plunkr пример я создал:Почему не запускаются угловые события, когда jQuery манипулирует вещами?

http://plnkr.co/edit/bgocW5Xg1q0yyiLOAR0F

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

+3

Пожалуйста, добавьте код в свой вопрос, я думаю, что это хорошая практика, чтобы иметь вполне понятный вопрос, прочитав его полностью на SO и не нужно идти в другое место, чтобы получить то, что вы на самом деле имеете в виду. –

ответ

2

Согласно AngularJS документации - ngChange:

Evaluate дано выражение, когда пользователь изменяет вход. Выражение не оценивается, когда изменение стоимости происходит от модели.

Я предполагаю, что он также учитывает свойства, измененные jQuery.

Я не знаю, если это будет соответствовать вашим требованиям, но вы можете просто сделать это:

$('#test').click(function(){ 
    $('[name="localAuth"]').click(); 
}); 

See updated Plunker

+0

Как ни странно это работает. Однако я надеюсь найти причину этого. Мне бы не хотелось гадать с большим количеством кода плагина, который уже имеет код '$ (...). Prop ('checked', true), написанный где угодно. Хотел бы я дать частичный кредит за этот ответ. Я дам ему несколько дней и посмотрю, есть ли у кого-то другой ответ. В противном случае вы выигрываете :) – ymerej

1

Цитируется official doc:

ngChange (по желанию) - {string =} - Угловое выражение, которое должно выполняться, когда вход изменяется из-за взаимодействия пользователя с элементом ввода.

Вы установили значение внутри контекста JavaScript, что не приведет к запуску события браузера, который прослушивает Angular. Таким образом, для запуска функции углового можно просто поставить:

$('[name="localAuth"]').click(); 

в вашем обработчике событий jQuery.

Однако, я не думаю, что когда-нибудь захочу сделать это в угловом приложении. Вместо этого я свяжу функцию anguar с помощью ng-click на кнопке и измените модель в этой функции без участия jQuery.

+0

@HighKickX Я не украл ваш ответ! Я не видел ответа, когда писал свой ответ. Кроме того, этот вопрос является своего рода вопросом «что такое результат 1 + 1», поэтому вы и я придумали подобные ответы, неудивительно. –

+0

Простите, я спонтанно удалил свой комментарий через несколько минут, потому что я понял, что это действительно «1 + 1». Извините меня снова. –

+0

Я проголосовал за ваш ответ кстати –

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