mah*_*ail 9 typescript ionic2 angular
我需要在另一个控制器中调用 ,有可能吗?functionionic 2
在我的代码下面,我想调用loadPeople标签控制器.
home.ts
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import {PeopleService} from '../../providers/people-service/people-service';
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
constructor(public navCtrl: NavController,public peopleService: PeopleService) {
this.loadPeople();
}
loadPeople(){
this.peopleService.load()
.then(data => {
this.people = data;
});
}
}
Run Code Online (Sandbox Code Playgroud)
tabs.ts
import { Component } from '@angular/core';
import { HomePage } from '../home/home';
import { AboutPage } from '../about/about';
import { ContactPage } from '../contact/contact';
@Component({
templateUrl: 'tabs.html'
})
export class TabsPage {
// this tells the tabs component which Pages
// should be each tab's root Page
tab1Root: any = HomePage;
tab2Root: any = AboutPage;
tab3Root: any = ContactPage;
constructor() {
}
}
Run Code Online (Sandbox Code Playgroud)
在tabs.ts我想调用选项卡上的loadPeople功能,我该怎么做?
Onn*_*nno 18
有几种选择.一种方法是将您的函数loadPeople()放入服务类,该服务类可从所有组件访问.
另一种方法是使用Ionic Events来触发组件之间的函数调用.例如,如果选项卡调用函数tabSelected(),则可以在此函数中触发事件:
tabSelected() {
this.events.publish('functionCall:tabSelected', anyAdditionalData);
}
Run Code Online (Sandbox Code Playgroud)
并听取它home.ts并loadPeople()在事件被触发时调用:
this.events.subscribe('functionCall:tabSelected', eventData => {
this.loadPeople();
});
Run Code Online (Sandbox Code Playgroud)
您甚至可以使用该事件发送数据(此处:) anyAdditionalData.
您需要做的就是将函数定义为静态并使用类名调用该函数。
例如:
class A{
static f1(){
console.log("funtion1");
}
}
class B{
classA.f1();
}
Run Code Online (Sandbox Code Playgroud)
希望它能起作用
| 归档时间: |
|
| 查看次数: |
12645 次 |
| 最近记录: |