view-controller/item injector stuff

This commit is contained in:
Adam Bradley
2015-06-27 15:09:18 -05:00
parent f21802ba87
commit ee3de8a03d
8 changed files with 24 additions and 34 deletions

View File

@@ -1,8 +1,10 @@
import {Compiler} from 'angular2/angular2';
import {ElementRef} from 'angular2/src/core/compiler/element_ref';
import {DynamicComponentLoader} from 'angular2/src/core/compiler/dynamic_component_loader';
import {Injector} from 'angular2/di';
import {AppViewManager} from 'angular2/src/core/compiler/view_manager';
import {Injector, bind} from 'angular2/di';
import {IonicApp} from '../app/app';
import {ViewItem} from './view-item';
import {NavController} from '../nav/nav-controller';
import {PaneController} from '../nav/pane';
@@ -22,10 +24,11 @@ export class ViewController {
this.compiler = injector.get(Compiler);
this.loader = injector.get(DynamicComponentLoader);
this.injector = injector;
this.viewMngr = injector.get(AppViewManager);
let ionicApp = injector.get(IonicApp);
this.items = [];
this.navCtrl = new NavController(this);
this.panes = new PaneController(this);
this.sbTransition = null;
@@ -33,6 +36,12 @@ export class ViewController {
this.id = ++ctrlIds;
this._ids = -1;
// build a new injector for child ViewItems to use
this.injector = injector.resolveAndCreateChild([
bind(ViewController).toValue(this),
bind(NavController).toValue(new NavController(this))
]);
}
push(ComponentType, params = {}, opts = {}) {

View File

@@ -1,12 +1,8 @@
import {EventEmitter} from 'angular2/angular2';
import {ViewContainerRef} from 'angular2/src/core/compiler/view_container_ref';
import {ElementRef} from 'angular2/src/core/compiler/element_ref';
import {bind} from 'angular2/di';
import {AppViewManager} from 'angular2/src/core/compiler/view_manager';
import {ViewController} from '../view/view-controller';
import {NavController} from '../nav/nav-controller';
import {NavParams} from '../nav/nav-params';
import {NavParams} from '../nav/nav-controller';
export class ViewItem {
@@ -47,12 +43,8 @@ export class ViewItem {
viewCtrl.panes.get(itemStructure, pane => {
this.pane = pane;
let viewMngr = viewCtrl.injector.get(AppViewManager);
// create a new injector just for this ViewItem
let injector = viewCtrl.injector.resolveAndCreateChild([
bind(ViewController).toValue(viewCtrl),
bind(NavController).toValue(viewCtrl.navCtrl),
bind(NavParams).toValue(this.params),
bind(ViewItem).toValue(this)
]);
@@ -63,7 +55,7 @@ export class ViewItem {
let hostViewRef = contentContainer.create(componentProtoViewRef, -1, null, injector);
// get the component's instance, and set it to the this ViewItem
this.setInstance( viewMngr.getComponent(new ElementRef(hostViewRef, 0)) );
this.setInstance( viewCtrl.viewMngr.getComponent(new ElementRef(hostViewRef, 0)) );
this.viewElement( hostViewRef._view.render._view.rootNodes[0] );
// remember how to dispose of this reference