feat(view): reimplemented property setters using change detection

This commit is contained in:
vsavkin
2015-04-21 11:47:53 -07:00
parent 8a92a1f13e
commit 8ccafb0524
36 changed files with 510 additions and 469 deletions

View File

@ -45,7 +45,7 @@ class _DirectiveMetadataVisitor extends Object
compileChildren: false,
properties: {},
hostListeners: {},
setters: [],
hostProperties: {},
readAttributes: []);
super.visitInstanceCreationExpression(node);
}
@ -76,6 +76,9 @@ class _DirectiveMetadataVisitor extends Object
case 'properties':
_populateProperties(node.expression);
break;
case 'hostProperties':
_populateHostProperties(node.expression);
break;
case 'hostListeners':
_populateHostListeners(node.expression);
}
@ -135,4 +138,19 @@ class _DirectiveMetadataVisitor extends Object
meta.hostListeners[sKey] = sVal;
}
}
void _populateHostProperties(Expression hostPropertyValue) {
if (hostPropertyValue is! MapLiteral) {
logger.error('Angular 2 currently only supports map literal values for '
'Directive#hostProperties.'
' Source: ${hostPropertyValue}');
return;
}
for (MapLiteralEntry entry in (hostPropertyValue as MapLiteral).entries) {
var sKey = _expressionToString(entry.key, 'Directive#hostProperties keys');
var sVal =
_expressionToString(entry.value, 'Directive#hostProperties values');
meta.hostProperties[sKey] = sVal;
}
}
}