feat(change_detection): request a change detection check when an event happens

Closes #3679
This commit is contained in:
vsavkin
2015-08-16 19:05:53 -07:00
committed by Victor Savkin
parent 823fa4689e
commit 5e6317fecc
8 changed files with 82 additions and 21 deletions

View File

@ -183,13 +183,23 @@ class _CodegenState {
String _genEventBindingEval(EventBinding eb, ProtoRecord r){
if (r.lastInBinding) {
var evalRecord = _logic.genEventBindingEvalValue(eb, r);
var markPath = _genMarkPathToRootAsCheckOnce(r);
var prevDefault = _genUpdatePreventDefault(eb, r);
return "${evalRecord}\n${prevDefault}";
return "${evalRecord}\n${markPath}\n${prevDefault}";
} else {
return _logic.genEventBindingEvalValue(eb, r);
}
}
String _genMarkPathToRootAsCheckOnce(ProtoRecord r) {
var br = r.bindingRecord;
if (br.isOnPushChangeDetection()) {
return "${_names.getDetectorName(br.directiveRecord.directiveIndex)}.markPathToRootAsCheckOnce();";
} else {
return "";
}
}
String _genUpdatePreventDefault(EventBinding eb, ProtoRecord r) {
var local = this._names.getEventLocalName(eb, r.selfIndex);
return """if (${local} == false) { ${_names.getPreventDefaultAccesor()} = true; }""";