2016-01-30 1 views
2

Я знаю о (изменении) event Binding в angular2, но я удивлен, почему мой код не работает должным образом?(change) event hook in angular2

Мой код здесь ..

http://plnkr.co/edit/9pSWSeqBc5oaSAtsfwNY?p=preview

Когда событие изменение называется не как условие работы, как ожидалось.

(change)="holiday= !holiday && employee= !employee"

Когда событие изменения называется в первый раз, она работает нормально, но второй раз он будет работать только для первого условия holiday то есть. В моем примере я ожидал, что значение будет либо истинным, либо ложным, но не как ожидалось.

Несомненно, есть некоторая ошибка. Есть ли кто-нибудь, кто может объяснить жизненный цикл события (change) должным образом?

ответ

6

Вы должны их разделить ; вместо &&.

Если первое выражение не соответствует действительности, оно не будет оценивать следующее выражение.

(change)="holiday= !holiday;employee= !employee" 

Как && работает оператор?

  1. Пусть a && b, если оба верны, то только она возвращает истину (в общем не должно быть никаких false значение в противном случае он возвращает ложь).
  2. При оценке a && b код сначала должен быть проверен a Значение true, тогда только переводчик отправит b значение для его оценки. Если a значение само является false, то он не оценивает (проверяет) значение b, а a && b выражение вернет false.

Перед тем, как были с holiday= !holiday && employee= !employee. При начальной нагрузке оба holiday & employee имеет false значение. Когда вы нажимаете на checkbox, он оценивает holiday= !holiday && employee= !employee, и holiday & employee значение будет true.

В основном за сценой, когда первый holiday= !holiday получить оценку, holiday становится true к false & holiday= !holiday выражения возвращают последнее значение (возвращает true), делает ли второе выражение одно и то же & возвращает true. В настоящее время holiday = true & employee = true. Когда вы снова нажмете на флажок. Он вызывает событие изменения & снова попробуйте оценить holiday= !holiday && employee= !employee. Где holiday= !holiday возвращение false, так как я упоминаю выше Как работает &&?. Он не заботится о следующей части выражения и возвращает значение false.

holiday = false & employee = true. Если вы снова нажмете на флажок, то окажется true & перейдите к оценке другой части выражения, по которой employee получается true от false.

+1

благодаря его работе сейчас. но могу ли я знать, в чем проблема с '&&' работает, но только в первый раз? –

+0

@PardeepJain дайте мне минутку, позвольте мне уточнить ответ –

+1

@PardeepJain Посмотрите на обновленный ответ. Если вы хотите никаких объяснений. дай мне знать. Спасибо :) не стесняйтесь исправить грамматику. Я приму изменение. –