feat(views): adds (de)hydration of views and template vars.

Dehydrated views are views that are structurally fixed, but their
directive instances and viewports are purged.

Support for local bindings is added to the view.
This commit is contained in:
Rado Kirov
2014-12-01 18:41:55 -08:00
parent 5c531f718e
commit 174613067c
11 changed files with 413 additions and 109 deletions

View File

@ -1,8 +1,9 @@
import {MapWrapper} from 'facade/collection';
import {BaseException} from 'facade/lang';
export class ContextWithVariableBindings {
parent:any;
/// varBindings are read-only. updating/adding keys is not supported.
/// varBindings' keys are read-only. adding/removing keys is not supported.
varBindings:Map;
constructor(parent:any, varBindings:Map) {
@ -17,4 +18,21 @@ export class ContextWithVariableBindings {
get(name:string) {
return MapWrapper.get(this.varBindings, name);
}
}
set(name:string, value) {
// TODO(rado): consider removing this check if we can guarantee this is not
// exposed to the public API.
if (this.hasBinding(name)) {
MapWrapper.set(this.varBindings, name, value);
} else {
throw new BaseException(
'VariableBindings do not support setting of new keys post-construction.');
}
}
clearValues() {
for (var [k, v] of MapWrapper.iterable(this.varBindings)) {
MapWrapper.set(this.varBindings, k, null);
}
}
}