refactor(change_detection): renamed BindingPropagationConfig to ChangeDetectorRef
This commit is contained in:
parent
213dabdceb
commit
8c1adabe1c
2
modules/angular2/change_detection.js
vendored
2
modules/angular2/change_detection.js
vendored
@ -20,7 +20,7 @@ export {DynamicProtoChangeDetector, JitProtoChangeDetector} from './src/change_d
|
|||||||
export {BindingRecord} from './src/change_detection/binding_record';
|
export {BindingRecord} from './src/change_detection/binding_record';
|
||||||
export {DirectiveRecord} from './src/change_detection/directive_record';
|
export {DirectiveRecord} from './src/change_detection/directive_record';
|
||||||
export {DynamicChangeDetector} from './src/change_detection/dynamic_change_detector';
|
export {DynamicChangeDetector} from './src/change_detection/dynamic_change_detector';
|
||||||
export {BindingPropagationConfig} from './src/change_detection/binding_propagation_config';
|
export {ChangeDetectorRef} from './src/change_detection/change_detector_ref';
|
||||||
export {PipeRegistry} from './src/change_detection/pipes/pipe_registry';
|
export {PipeRegistry} from './src/change_detection/pipes/pipe_registry';
|
||||||
export {uninitialized} from './src/change_detection/change_detection_util';
|
export {uninitialized} from './src/change_detection/change_detection_util';
|
||||||
export {NO_CHANGE, Pipe} from './src/change_detection/pipes/pipe';
|
export {NO_CHANGE, Pipe} from './src/change_detection/pipes/pipe';
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import {isPresent} from 'angular2/src/facade/lang';
|
import {isPresent} from 'angular2/src/facade/lang';
|
||||||
import {List, ListWrapper} from 'angular2/src/facade/collection';
|
import {List, ListWrapper} from 'angular2/src/facade/collection';
|
||||||
import {BindingPropagationConfig} from './binding_propagation_config';
|
import {ChangeDetectorRef} from './change_detector_ref';
|
||||||
import {ChangeDetector} from './interfaces';
|
import {ChangeDetector} from './interfaces';
|
||||||
import {CHECK_ALWAYS, CHECK_ONCE, CHECKED, DETACHED, ON_PUSH} from './constants';
|
import {CHECK_ALWAYS, CHECK_ONCE, CHECKED, DETACHED, ON_PUSH} from './constants';
|
||||||
|
|
||||||
@ -9,13 +9,13 @@ export class AbstractChangeDetector extends ChangeDetector {
|
|||||||
shadowDomChildren:List;
|
shadowDomChildren:List;
|
||||||
parent:ChangeDetector;
|
parent:ChangeDetector;
|
||||||
mode:string;
|
mode:string;
|
||||||
bindingPropagationConfig:BindingPropagationConfig;
|
changeDetectorRef:ChangeDetectorRef;
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
this.lightDomChildren = [];
|
this.lightDomChildren = [];
|
||||||
this.shadowDomChildren = [];
|
this.shadowDomChildren = [];
|
||||||
this.bindingPropagationConfig = new BindingPropagationConfig(this);
|
this.changeDetectorRef = new ChangeDetectorRef(this);
|
||||||
this.mode = null;
|
this.mode = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,29 +0,0 @@
|
|||||||
import {ChangeDetector} from './interfaces';
|
|
||||||
import {CHECK_ONCE, DETACHED, CHECK_ALWAYS} from './constants';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @exportedAs angular2/change_detection
|
|
||||||
*/
|
|
||||||
export class BindingPropagationConfig {
|
|
||||||
_cd:ChangeDetector;
|
|
||||||
|
|
||||||
constructor(cd:ChangeDetector) {
|
|
||||||
this._cd = cd;
|
|
||||||
}
|
|
||||||
|
|
||||||
shouldBePropagated() {
|
|
||||||
this._cd.mode = CHECK_ONCE;
|
|
||||||
}
|
|
||||||
|
|
||||||
shouldBePropagatedFromRoot() {
|
|
||||||
this._cd.markPathToRootAsCheckOnce();
|
|
||||||
}
|
|
||||||
|
|
||||||
shouldNotPropagate() {
|
|
||||||
this._cd.mode = DETACHED;
|
|
||||||
}
|
|
||||||
|
|
||||||
shouldAlwaysPropagate() {
|
|
||||||
this._cd.mode = CHECK_ALWAYS;
|
|
||||||
}
|
|
||||||
}
|
|
@ -362,13 +362,13 @@ export class ChangeDetectorJITGenerator {
|
|||||||
var change = this.changeNames[r.selfIndex];
|
var change = this.changeNames[r.selfIndex];
|
||||||
|
|
||||||
var pipe = this.pipeNames[r.selfIndex];
|
var pipe = this.pipeNames[r.selfIndex];
|
||||||
var bpc = r.mode === RECORD_TYPE_BINDING_PIPE ? "this.bindingPropagationConfig" : "null";
|
var cdRef = r.mode === RECORD_TYPE_BINDING_PIPE ? "this.changeDetectorRef" : "null";
|
||||||
|
|
||||||
var update = this.genUpdateDirectiveOrElement(r);
|
var update = this.genUpdateDirectiveOrElement(r);
|
||||||
var addToChanges = this.genAddToChanges(r);
|
var addToChanges = this.genAddToChanges(r);
|
||||||
var lastInDirective = this.genNotifyOnChanges(r);
|
var lastInDirective = this.genNotifyOnChanges(r);
|
||||||
|
|
||||||
return pipeCheckTemplate(r.selfIndex - 1, context, bpc, pipe, r.name, oldValue, newValue, change,
|
return pipeCheckTemplate(r.selfIndex - 1, context, cdRef, pipe, r.name, oldValue, newValue, change,
|
||||||
update, addToChanges, lastInDirective);
|
update, addToChanges, lastInDirective);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
45
modules/angular2/src/change_detection/change_detector_ref.js
vendored
Normal file
45
modules/angular2/src/change_detection/change_detector_ref.js
vendored
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
import {ChangeDetector} from './interfaces';
|
||||||
|
import {CHECK_ONCE, DETACHED, CHECK_ALWAYS} from './constants';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Controls change detection.
|
||||||
|
*
|
||||||
|
* [ChangeDetectorRef] allows requesting checks for detectors that rely on observables. It also allows detaching and
|
||||||
|
* attaching change detector subtrees.
|
||||||
|
*
|
||||||
|
* @exportedAs angular2/change_detection
|
||||||
|
*/
|
||||||
|
export class ChangeDetectorRef {
|
||||||
|
_cd:ChangeDetector;
|
||||||
|
|
||||||
|
constructor(cd:ChangeDetector) {
|
||||||
|
this._cd = cd;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Request to check all ON_PUSH ancestors.
|
||||||
|
*/
|
||||||
|
requestCheck() {
|
||||||
|
this._cd.markPathToRootAsCheckOnce();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Detaches the change detector from the change detector tree.
|
||||||
|
*
|
||||||
|
* The detached change detector will not be checked until it is reattached.
|
||||||
|
*/
|
||||||
|
detach() {
|
||||||
|
this._cd.mode = DETACHED;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reattach the change detector to the change detector tree.
|
||||||
|
*
|
||||||
|
* This also requests a check of this change detector. This reattached change detector will be checked during the
|
||||||
|
* next change detection run.
|
||||||
|
*/
|
||||||
|
reattach() {
|
||||||
|
this._cd.mode = CHECK_ALWAYS;
|
||||||
|
this.requestCheck();
|
||||||
|
}
|
||||||
|
}
|
@ -245,12 +245,12 @@ export class DynamicChangeDetector extends AbstractChangeDetector {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Currently, only pipes that used in bindings in the template get
|
// Currently, only pipes that used in bindings in the template get
|
||||||
// the bindingPropagationConfig of the encompassing component.
|
// the changeDetectorRef of the encompassing component.
|
||||||
//
|
//
|
||||||
// In the future, pipes declared in the bind configuration should
|
// In the future, pipes declared in the bind configuration should
|
||||||
// be able to access the bindingPropagationConfig of that component.
|
// be able to access the changeDetectorRef of that component.
|
||||||
var bpc = proto.mode === RECORD_TYPE_BINDING_PIPE ? this.bindingPropagationConfig : null;
|
var cdr = proto.mode === RECORD_TYPE_BINDING_PIPE ? this.changeDetectorRef : null;
|
||||||
var pipe = this.pipeRegistry.get(proto.name, context, bpc);
|
var pipe = this.pipeRegistry.get(proto.name, context, cdr);
|
||||||
this._writePipe(proto, pipe);
|
this._writePipe(proto, pipe);
|
||||||
return pipe;
|
return pipe;
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,7 @@ export class IterableChangesFactory {
|
|||||||
return IterableChanges.supportsObj(obj);
|
return IterableChanges.supportsObj(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
create(bpc):Pipe {
|
create(cdRef):Pipe {
|
||||||
return new IterableChanges();
|
return new IterableChanges();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@ export class KeyValueChangesFactory {
|
|||||||
return KeyValueChanges.supportsObj(obj);
|
return KeyValueChanges.supportsObj(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
create(bpc):Pipe {
|
create(cdRef):Pipe {
|
||||||
return new KeyValueChanges();
|
return new KeyValueChanges();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@ export class NullPipeFactory {
|
|||||||
return NullPipe.supportsObj(obj);
|
return NullPipe.supportsObj(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
create(bpc):Pipe {
|
create(cdRef):Pipe {
|
||||||
return new NullPipe();
|
return new NullPipe();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import {List, ListWrapper} from 'angular2/src/facade/collection';
|
import {List, ListWrapper} from 'angular2/src/facade/collection';
|
||||||
import {isBlank, isPresent, BaseException, CONST} from 'angular2/src/facade/lang';
|
import {isBlank, isPresent, BaseException, CONST} from 'angular2/src/facade/lang';
|
||||||
import {Pipe} from './pipe';
|
import {Pipe} from './pipe';
|
||||||
import {BindingPropagationConfig} from '../binding_propagation_config';
|
import {ChangeDetectorRef} from '../change_detector_ref';
|
||||||
|
|
||||||
export class PipeRegistry {
|
export class PipeRegistry {
|
||||||
config;
|
config;
|
||||||
@ -10,7 +10,7 @@ export class PipeRegistry {
|
|||||||
this.config = config;
|
this.config = config;
|
||||||
}
|
}
|
||||||
|
|
||||||
get(type:string, obj, bpc:BindingPropagationConfig):Pipe {
|
get(type:string, obj, cdRef:ChangeDetectorRef):Pipe {
|
||||||
var listOfConfigs = this.config[type];
|
var listOfConfigs = this.config[type];
|
||||||
if (isBlank(listOfConfigs)) {
|
if (isBlank(listOfConfigs)) {
|
||||||
throw new BaseException(`Cannot find a pipe for type '${type}' object '${obj}'`);
|
throw new BaseException(`Cannot find a pipe for type '${type}' object '${obj}'`);
|
||||||
@ -23,6 +23,6 @@ export class PipeRegistry {
|
|||||||
throw new BaseException(`Cannot find a pipe for type '${type}' object '${obj}'`);
|
throw new BaseException(`Cannot find a pipe for type '${type}' object '${obj}'`);
|
||||||
}
|
}
|
||||||
|
|
||||||
return matchingConfig.create(bpc);
|
return matchingConfig.create(cdRef);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -8,7 +8,7 @@ import * as viewModule from 'angular2/src/core/compiler/view';
|
|||||||
import {ViewContainer} from 'angular2/src/core/compiler/view_container';
|
import {ViewContainer} from 'angular2/src/core/compiler/view_container';
|
||||||
import {NgElement} from 'angular2/src/core/compiler/ng_element';
|
import {NgElement} from 'angular2/src/core/compiler/ng_element';
|
||||||
import {Directive, Component, onChange, onDestroy, onAllChangesDone} from 'angular2/src/core/annotations/annotations';
|
import {Directive, Component, onChange, onDestroy, onAllChangesDone} from 'angular2/src/core/annotations/annotations';
|
||||||
import {BindingPropagationConfig} from 'angular2/change_detection';
|
import {ChangeDetectorRef} from 'angular2/change_detection';
|
||||||
import {QueryList} from './query_list';
|
import {QueryList} from './query_list';
|
||||||
|
|
||||||
var _MAX_DIRECTIVE_CONSTRUCTION_COUNTER = 10;
|
var _MAX_DIRECTIVE_CONSTRUCTION_COUNTER = 10;
|
||||||
@ -46,7 +46,7 @@ class StaticKeys {
|
|||||||
viewId:number;
|
viewId:number;
|
||||||
ngElementId:number;
|
ngElementId:number;
|
||||||
viewContainerId:number;
|
viewContainerId:number;
|
||||||
bindingPropagationConfigId:number;
|
changeDetectorRefId:number;
|
||||||
elementRefId:number;
|
elementRefId:number;
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
@ -54,7 +54,7 @@ class StaticKeys {
|
|||||||
this.viewId = Key.get(viewModule.AppView).id;
|
this.viewId = Key.get(viewModule.AppView).id;
|
||||||
this.ngElementId = Key.get(NgElement).id;
|
this.ngElementId = Key.get(NgElement).id;
|
||||||
this.viewContainerId = Key.get(ViewContainer).id;
|
this.viewContainerId = Key.get(ViewContainer).id;
|
||||||
this.bindingPropagationConfigId = Key.get(BindingPropagationConfig).id;
|
this.changeDetectorRefId = Key.get(ChangeDetectorRef).id;
|
||||||
this.elementRefId = Key.get(ElementRef).id;
|
this.elementRefId = Key.get(ElementRef).id;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -298,13 +298,13 @@ export class PreBuiltObjects {
|
|||||||
view:viewModule.AppView;
|
view:viewModule.AppView;
|
||||||
element:NgElement;
|
element:NgElement;
|
||||||
viewContainer:ViewContainer;
|
viewContainer:ViewContainer;
|
||||||
bindingPropagationConfig:BindingPropagationConfig;
|
changeDetectorRef:ChangeDetectorRef;
|
||||||
constructor(view, element:NgElement, viewContainer:ViewContainer,
|
constructor(view, element:NgElement, viewContainer:ViewContainer,
|
||||||
bindingPropagationConfig:BindingPropagationConfig) {
|
changeDetectorRef:ChangeDetectorRef) {
|
||||||
this.view = view;
|
this.view = view;
|
||||||
this.element = element;
|
this.element = element;
|
||||||
this.viewContainer = viewContainer;
|
this.viewContainer = viewContainer;
|
||||||
this.bindingPropagationConfig = bindingPropagationConfig;
|
this.changeDetectorRef = changeDetectorRef;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -885,7 +885,7 @@ export class ElementInjector extends TreeNode {
|
|||||||
if (keyId === staticKeys.viewId) return this._preBuiltObjects.view;
|
if (keyId === staticKeys.viewId) return this._preBuiltObjects.view;
|
||||||
if (keyId === staticKeys.ngElementId) return this._preBuiltObjects.element;
|
if (keyId === staticKeys.ngElementId) return this._preBuiltObjects.element;
|
||||||
if (keyId === staticKeys.viewContainerId) return this._preBuiltObjects.viewContainer;
|
if (keyId === staticKeys.viewContainerId) return this._preBuiltObjects.viewContainer;
|
||||||
if (keyId === staticKeys.bindingPropagationConfigId) return this._preBuiltObjects.bindingPropagationConfig;
|
if (keyId === staticKeys.changeDetectorRefId) return this._preBuiltObjects.changeDetectorRef;
|
||||||
|
|
||||||
//TODO add other objects as needed
|
//TODO add other objects as needed
|
||||||
return _undefined;
|
return _undefined;
|
||||||
|
2
modules/angular2/src/core/compiler/view.js
vendored
2
modules/angular2/src/core/compiler/view.js
vendored
@ -1,6 +1,6 @@
|
|||||||
import {ListWrapper, MapWrapper, Map, StringMapWrapper, List} from 'angular2/src/facade/collection';
|
import {ListWrapper, MapWrapper, Map, StringMapWrapper, List} from 'angular2/src/facade/collection';
|
||||||
import {AST, Locals, ChangeDispatcher, ProtoChangeDetector, ChangeDetector,
|
import {AST, Locals, ChangeDispatcher, ProtoChangeDetector, ChangeDetector,
|
||||||
ChangeRecord, BindingRecord, DirectiveRecord, BindingPropagationConfig} from 'angular2/change_detection';
|
ChangeRecord, BindingRecord, DirectiveRecord, ChangeDetectorRef} from 'angular2/change_detection';
|
||||||
|
|
||||||
import {ProtoElementInjector, ElementInjector, PreBuiltObjects, DirectiveBinding} from './element_injector';
|
import {ProtoElementInjector, ElementInjector, PreBuiltObjects, DirectiveBinding} from './element_injector';
|
||||||
import {ElementBinder} from './element_binder';
|
import {ElementBinder} from './element_binder';
|
||||||
|
@ -5,7 +5,7 @@ import {isPresent, isBlank, BaseException} from 'angular2/src/facade/lang';
|
|||||||
import {NgElement} from 'angular2/src/core/compiler/ng_element';
|
import {NgElement} from 'angular2/src/core/compiler/ng_element';
|
||||||
import * as vcModule from './view_container';
|
import * as vcModule from './view_container';
|
||||||
import * as viewModule from './view';
|
import * as viewModule from './view';
|
||||||
import {BindingPropagationConfig} from 'angular2/change_detection';
|
import {ChangeDetectorRef} from 'angular2/change_detection';
|
||||||
|
|
||||||
// TODO(tbosch): Make this an OpaqueToken as soon as our transpiler supports this!
|
// TODO(tbosch): Make this an OpaqueToken as soon as our transpiler supports this!
|
||||||
export const VIEW_POOL_CAPACITY = 'ViewFactory.viewPoolCapacity';
|
export const VIEW_POOL_CAPACITY = 'ViewFactory.viewPoolCapacity';
|
||||||
@ -77,12 +77,12 @@ export class ViewFactory {
|
|||||||
elementInjectors[binderIdx] = elementInjector;
|
elementInjectors[binderIdx] = elementInjector;
|
||||||
|
|
||||||
// componentChildViews
|
// componentChildViews
|
||||||
var bindingPropagationConfig = null;
|
var changeDetectorRef = null;
|
||||||
if (binder.hasStaticComponent()) {
|
if (binder.hasStaticComponent()) {
|
||||||
var childView = this._createView(binder.nestedProtoView);
|
var childView = this._createView(binder.nestedProtoView);
|
||||||
changeDetector.addShadowDomChild(childView.changeDetector);
|
changeDetector.addShadowDomChild(childView.changeDetector);
|
||||||
|
|
||||||
bindingPropagationConfig = new BindingPropagationConfig(childView.changeDetector);
|
changeDetectorRef = new ChangeDetectorRef(childView.changeDetector);
|
||||||
|
|
||||||
componentChildViews[binderIdx] = childView;
|
componentChildViews[binderIdx] = childView;
|
||||||
}
|
}
|
||||||
@ -97,7 +97,7 @@ export class ViewFactory {
|
|||||||
// preBuiltObjects
|
// preBuiltObjects
|
||||||
if (isPresent(elementInjector)) {
|
if (isPresent(elementInjector)) {
|
||||||
preBuiltObjects[binderIdx] = new eli.PreBuiltObjects(view, new NgElement(view, binderIdx), viewContainer,
|
preBuiltObjects[binderIdx] = new eli.PreBuiltObjects(view, new NgElement(view, binderIdx), viewContainer,
|
||||||
bindingPropagationConfig);
|
changeDetectorRef);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -673,7 +673,7 @@ export function main() {
|
|||||||
|
|
||||||
cd.detectChanges();
|
cd.detectChanges();
|
||||||
|
|
||||||
expect(registry.bpc).toBe(cd.bindingPropagationConfig);
|
expect(registry.cdRef).toBe(cd.changeDetectorRef);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -762,7 +762,7 @@ class FakePipeRegistry extends PipeRegistry {
|
|||||||
numberOfLookups:number;
|
numberOfLookups:number;
|
||||||
pipeType:string;
|
pipeType:string;
|
||||||
factory:Function;
|
factory:Function;
|
||||||
bpc:any;
|
cdRef:any;
|
||||||
|
|
||||||
constructor(pipeType, factory) {
|
constructor(pipeType, factory) {
|
||||||
super({});
|
super({});
|
||||||
@ -771,10 +771,10 @@ class FakePipeRegistry extends PipeRegistry {
|
|||||||
this.numberOfLookups = 0;
|
this.numberOfLookups = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
get(type:string, obj, bpc) {
|
get(type:string, obj, cdRef) {
|
||||||
if (type != this.pipeType) return null;
|
if (type != this.pipeType) return null;
|
||||||
this.numberOfLookups ++;
|
this.numberOfLookups ++;
|
||||||
this.bpc = bpc;
|
this.cdRef = cdRef;
|
||||||
return this.factory();
|
return this.factory();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -51,7 +51,7 @@ class PipeFactory {
|
|||||||
return this.shouldSupport;
|
return this.shouldSupport;
|
||||||
}
|
}
|
||||||
|
|
||||||
create(bpc):Pipe {
|
create(cdRef):Pipe {
|
||||||
return this.pipe;
|
return this.pipe;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -11,7 +11,7 @@ import {AppProtoView, AppView} from 'angular2/src/core/compiler/view';
|
|||||||
import {ViewContainer} from 'angular2/src/core/compiler/view_container';
|
import {ViewContainer} from 'angular2/src/core/compiler/view_container';
|
||||||
import {NgElement} from 'angular2/src/core/compiler/ng_element';
|
import {NgElement} from 'angular2/src/core/compiler/ng_element';
|
||||||
import {Directive} from 'angular2/src/core/annotations/annotations';
|
import {Directive} from 'angular2/src/core/annotations/annotations';
|
||||||
import {BindingPropagationConfig, Parser, Lexer} from 'angular2/change_detection';
|
import {ChangeDetectorRef, Parser, Lexer} from 'angular2/change_detection';
|
||||||
import {ViewRef, Renderer, EventBinding} from 'angular2/src/render/api';
|
import {ViewRef, Renderer, EventBinding} from 'angular2/src/render/api';
|
||||||
import {QueryList} from 'angular2/src/core/compiler/query_list';
|
import {QueryList} from 'angular2/src/core/compiler/query_list';
|
||||||
|
|
||||||
@ -620,11 +620,11 @@ export function main() {
|
|||||||
expect(inj.get(ViewContainer)).toEqual(viewContainer);
|
expect(inj.get(ViewContainer)).toEqual(viewContainer);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should return bindingPropagationConfig', function () {
|
it('should return changeDetectorRef', function () {
|
||||||
var config = new BindingPropagationConfig(null);
|
var config = new ChangeDetectorRef(null);
|
||||||
var inj = injector([], null, null, new PreBuiltObjects(null, null, null, config));
|
var inj = injector([], null, null, new PreBuiltObjects(null, null, null, config));
|
||||||
|
|
||||||
expect(inj.get(BindingPropagationConfig)).toEqual(config);
|
expect(inj.get(ChangeDetectorRef)).toEqual(config);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ import {PromiseWrapper} from 'angular2/src/facade/async';
|
|||||||
|
|
||||||
import {Injector, bind} from 'angular2/di';
|
import {Injector, bind} from 'angular2/di';
|
||||||
import {dynamicChangeDetection,
|
import {dynamicChangeDetection,
|
||||||
ChangeDetection, DynamicChangeDetection, Pipe, PipeRegistry, BindingPropagationConfig, ON_PUSH} from 'angular2/change_detection';
|
ChangeDetection, DynamicChangeDetection, Pipe, PipeRegistry, ChangeDetectorRef, ON_PUSH} from 'angular2/change_detection';
|
||||||
|
|
||||||
import {Decorator, Component, Viewport, DynamicComponent} from 'angular2/src/core/annotations/annotations';
|
import {Decorator, Component, Viewport, DynamicComponent} from 'angular2/src/core/annotations/annotations';
|
||||||
import {View} from 'angular2/src/core/annotations/view';
|
import {View} from 'angular2/src/core/annotations/view';
|
||||||
@ -390,7 +390,7 @@ export function main() {
|
|||||||
})
|
})
|
||||||
}));
|
}));
|
||||||
|
|
||||||
describe("BindingPropagationConfig", () => {
|
describe("ChangeDetectorRef", () => {
|
||||||
it("can be used to disable the change detection of the component's template",
|
it("can be used to disable the change detection of the component's template",
|
||||||
inject([TestBed, AsyncTestCompleter], (tb, async) => {
|
inject([TestBed, AsyncTestCompleter], (tb, async) => {
|
||||||
|
|
||||||
@ -802,12 +802,12 @@ class MyDir {
|
|||||||
@View({template: '{{field}}'})
|
@View({template: '{{field}}'})
|
||||||
class PushBasedComp {
|
class PushBasedComp {
|
||||||
numberOfChecks:number;
|
numberOfChecks:number;
|
||||||
bpc:BindingPropagationConfig;
|
ref:ChangeDetectorRef;
|
||||||
prop;
|
prop;
|
||||||
|
|
||||||
constructor(bpc:BindingPropagationConfig) {
|
constructor(ref:ChangeDetectorRef) {
|
||||||
this.numberOfChecks = 0;
|
this.numberOfChecks = 0;
|
||||||
this.bpc = bpc;
|
this.ref = ref;
|
||||||
}
|
}
|
||||||
|
|
||||||
get field(){
|
get field(){
|
||||||
@ -816,7 +816,7 @@ class PushBasedComp {
|
|||||||
}
|
}
|
||||||
|
|
||||||
propagate() {
|
propagate() {
|
||||||
this.bpc.shouldBePropagatedFromRoot();
|
this.ref.requestCheck();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -943,7 +943,7 @@ class DoublePipeFactory {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
create(bpc) {
|
create(cdRef) {
|
||||||
return new DoublePipe();
|
return new DoublePipe();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user