mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-18 19:21:34 +08:00
view-controller/item injector stuff
This commit is contained in:
@ -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'
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -1,9 +0,0 @@
|
||||
|
||||
import * as util from 'ionic/util';
|
||||
|
||||
|
||||
export class NavParams {
|
||||
constructor(params) {
|
||||
util.extend(this, params);
|
||||
}
|
||||
}
|
@ -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() {
|
||||
|
@ -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({
|
||||
|
@ -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';
|
||||
|
||||
|
@ -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 = {}) {
|
||||
|
@ -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
|
||||
|
Reference in New Issue
Block a user