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

@ -15,7 +15,6 @@ export * from 'ionic/components/list/list'
export * from 'ionic/components/modal/modal'
export * from 'ionic/components/nav/nav'
export * from 'ionic/components/nav/nav-controller'
export * from 'ionic/components/nav/nav-params'
export * from 'ionic/components/nav/nav-push'
export * from 'ionic/components/nav-bar/nav-bar'
export * from 'ionic/components/slides/slides'

View File

@ -1,3 +1,5 @@
import {extend} from '../../util/util';
export class NavController {
@ -33,3 +35,9 @@ export class NavController {
return this._nav.pop.apply(this._nav, arguments);
}
}
export class NavParams {
constructor(params) {
extend(this, params);
}
}

View File

@ -1,9 +0,0 @@
import * as util from 'ionic/util';
export class NavParams {
constructor(params) {
util.extend(this, params);
}
}

View File

@ -2,9 +2,7 @@ import {Component, Directive, onInit} from 'angular2/src/core/annotations_impl/a
import {View} from 'angular2/src/core/annotations_impl/view';
import {Parent} from 'angular2/src/core/annotations_impl/visibility';
import {Optional} from 'angular2/src/di/annotations_impl';
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 {ViewController} from '../view/view-controller';
@ -24,10 +22,10 @@ import {ViewController} from '../view/view-controller';
export class Nav extends ViewController {
constructor(
@Optional() viewCtrl: ViewController,
@Optional() parentViewCtrl: ViewController,
injector: Injector
) {
super(viewCtrl, injector);
super(parentViewCtrl, injector);
}
onInit() {

View File

@ -1,16 +1,12 @@
import {Parent} from 'angular2/src/core/annotations_impl/visibility';
import {Directive, Component, onInit} from 'angular2/src/core/annotations_impl/annotations';
import {Optional} from 'angular2/src/di/annotations_impl'
import {View} from 'angular2/src/core/annotations_impl/view';
import {ElementRef} from 'angular2/src/core/compiler/element_ref';
import {Compiler} from 'angular2/angular2';
import {DynamicComponentLoader} from 'angular2/src/core/compiler/dynamic_component_loader';
import {Injector} from 'angular2/di';
import {ViewController} from '../view/view-controller';
import {ViewItem} from '../view/view-item';
import {Tabs} from './tabs';
import {Content} from '../content/content';
@Component({

View File

@ -1,9 +1,6 @@
import {Optional} from 'angular2/src/di/annotations_impl'
import {Component, onInit} from 'angular2/src/core/annotations_impl/annotations';
import {View} from 'angular2/src/core/annotations_impl/view';
import {ElementRef} from 'angular2/src/core/compiler/element_ref';
import {Compiler} from 'angular2/angular2';
import {DynamicComponentLoader} from 'angular2/src/core/compiler/dynamic_component_loader';
import {Injector} from 'angular2/di';
import {NgFor} from 'angular2/angular2';

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