mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-19 03:32:21 +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/modal/modal'
|
||||||
export * from 'ionic/components/nav/nav'
|
export * from 'ionic/components/nav/nav'
|
||||||
export * from 'ionic/components/nav/nav-controller'
|
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/nav-push'
|
||||||
export * from 'ionic/components/nav-bar/nav-bar'
|
export * from 'ionic/components/nav-bar/nav-bar'
|
||||||
export * from 'ionic/components/slides/slides'
|
export * from 'ionic/components/slides/slides'
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
import {extend} from '../../util/util';
|
||||||
|
|
||||||
|
|
||||||
export class NavController {
|
export class NavController {
|
||||||
|
|
||||||
@ -33,3 +35,9 @@ export class NavController {
|
|||||||
return this._nav.pop.apply(this._nav, arguments);
|
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 {View} from 'angular2/src/core/annotations_impl/view';
|
||||||
import {Parent} from 'angular2/src/core/annotations_impl/visibility';
|
import {Parent} from 'angular2/src/core/annotations_impl/visibility';
|
||||||
import {Optional} from 'angular2/src/di/annotations_impl';
|
import {Optional} from 'angular2/src/di/annotations_impl';
|
||||||
import {Compiler} from 'angular2/angular2';
|
|
||||||
import {ElementRef} from 'angular2/src/core/compiler/element_ref';
|
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 {Injector} from 'angular2/di';
|
||||||
|
|
||||||
import {ViewController} from '../view/view-controller';
|
import {ViewController} from '../view/view-controller';
|
||||||
@ -24,10 +22,10 @@ import {ViewController} from '../view/view-controller';
|
|||||||
export class Nav extends ViewController {
|
export class Nav extends ViewController {
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
@Optional() viewCtrl: ViewController,
|
@Optional() parentViewCtrl: ViewController,
|
||||||
injector: Injector
|
injector: Injector
|
||||||
) {
|
) {
|
||||||
super(viewCtrl, injector);
|
super(parentViewCtrl, injector);
|
||||||
}
|
}
|
||||||
|
|
||||||
onInit() {
|
onInit() {
|
||||||
|
@ -1,16 +1,12 @@
|
|||||||
import {Parent} from 'angular2/src/core/annotations_impl/visibility';
|
import {Parent} from 'angular2/src/core/annotations_impl/visibility';
|
||||||
import {Directive, Component, onInit} from 'angular2/src/core/annotations_impl/annotations';
|
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 {View} from 'angular2/src/core/annotations_impl/view';
|
||||||
import {ElementRef} from 'angular2/src/core/compiler/element_ref';
|
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 {Injector} from 'angular2/di';
|
||||||
|
|
||||||
import {ViewController} from '../view/view-controller';
|
import {ViewController} from '../view/view-controller';
|
||||||
import {ViewItem} from '../view/view-item';
|
import {ViewItem} from '../view/view-item';
|
||||||
import {Tabs} from './tabs';
|
import {Tabs} from './tabs';
|
||||||
import {Content} from '../content/content';
|
|
||||||
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
|
@ -1,9 +1,6 @@
|
|||||||
import {Optional} from 'angular2/src/di/annotations_impl'
|
import {Optional} from 'angular2/src/di/annotations_impl'
|
||||||
import {Component, onInit} from 'angular2/src/core/annotations_impl/annotations';
|
import {Component, onInit} from 'angular2/src/core/annotations_impl/annotations';
|
||||||
import {View} from 'angular2/src/core/annotations_impl/view';
|
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 {Injector} from 'angular2/di';
|
||||||
import {NgFor} from 'angular2/angular2';
|
import {NgFor} from 'angular2/angular2';
|
||||||
|
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
import {Compiler} from 'angular2/angular2';
|
import {Compiler} from 'angular2/angular2';
|
||||||
import {ElementRef} from 'angular2/src/core/compiler/element_ref';
|
import {ElementRef} from 'angular2/src/core/compiler/element_ref';
|
||||||
import {DynamicComponentLoader} from 'angular2/src/core/compiler/dynamic_component_loader';
|
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 {ViewItem} from './view-item';
|
||||||
import {NavController} from '../nav/nav-controller';
|
import {NavController} from '../nav/nav-controller';
|
||||||
import {PaneController} from '../nav/pane';
|
import {PaneController} from '../nav/pane';
|
||||||
@ -22,10 +24,11 @@ export class ViewController {
|
|||||||
|
|
||||||
this.compiler = injector.get(Compiler);
|
this.compiler = injector.get(Compiler);
|
||||||
this.loader = injector.get(DynamicComponentLoader);
|
this.loader = injector.get(DynamicComponentLoader);
|
||||||
this.injector = injector;
|
this.viewMngr = injector.get(AppViewManager);
|
||||||
|
|
||||||
|
let ionicApp = injector.get(IonicApp);
|
||||||
|
|
||||||
this.items = [];
|
this.items = [];
|
||||||
this.navCtrl = new NavController(this);
|
|
||||||
this.panes = new PaneController(this);
|
this.panes = new PaneController(this);
|
||||||
|
|
||||||
this.sbTransition = null;
|
this.sbTransition = null;
|
||||||
@ -33,6 +36,12 @@ export class ViewController {
|
|||||||
|
|
||||||
this.id = ++ctrlIds;
|
this.id = ++ctrlIds;
|
||||||
this._ids = -1;
|
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 = {}) {
|
push(ComponentType, params = {}, opts = {}) {
|
||||||
|
@ -1,12 +1,8 @@
|
|||||||
import {EventEmitter} from 'angular2/angular2';
|
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 {ElementRef} from 'angular2/src/core/compiler/element_ref';
|
||||||
import {bind} from 'angular2/di';
|
import {bind} from 'angular2/di';
|
||||||
import {AppViewManager} from 'angular2/src/core/compiler/view_manager';
|
|
||||||
|
|
||||||
import {ViewController} from '../view/view-controller';
|
import {NavParams} from '../nav/nav-controller';
|
||||||
import {NavController} from '../nav/nav-controller';
|
|
||||||
import {NavParams} from '../nav/nav-params';
|
|
||||||
|
|
||||||
|
|
||||||
export class ViewItem {
|
export class ViewItem {
|
||||||
@ -47,12 +43,8 @@ export class ViewItem {
|
|||||||
viewCtrl.panes.get(itemStructure, pane => {
|
viewCtrl.panes.get(itemStructure, pane => {
|
||||||
this.pane = pane;
|
this.pane = pane;
|
||||||
|
|
||||||
let viewMngr = viewCtrl.injector.get(AppViewManager);
|
|
||||||
|
|
||||||
// create a new injector just for this ViewItem
|
// create a new injector just for this ViewItem
|
||||||
let injector = viewCtrl.injector.resolveAndCreateChild([
|
let injector = viewCtrl.injector.resolveAndCreateChild([
|
||||||
bind(ViewController).toValue(viewCtrl),
|
|
||||||
bind(NavController).toValue(viewCtrl.navCtrl),
|
|
||||||
bind(NavParams).toValue(this.params),
|
bind(NavParams).toValue(this.params),
|
||||||
bind(ViewItem).toValue(this)
|
bind(ViewItem).toValue(this)
|
||||||
]);
|
]);
|
||||||
@ -63,7 +55,7 @@ export class ViewItem {
|
|||||||
let hostViewRef = contentContainer.create(componentProtoViewRef, -1, null, injector);
|
let hostViewRef = contentContainer.create(componentProtoViewRef, -1, null, injector);
|
||||||
|
|
||||||
// get the component's instance, and set it to the this ViewItem
|
// 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] );
|
this.viewElement( hostViewRef._view.render._view.rootNodes[0] );
|
||||||
|
|
||||||
// remember how to dispose of this reference
|
// remember how to dispose of this reference
|
||||||
|
Reference in New Issue
Block a user