背景:复宏汉霖项目CR做完后.来整理下需要优化的地方和给其他页面发送消息知识点.
优化项目启动时间
先记一下:最开始运行的时候所需时间:
删完99%的console.log和解决掉所有tslint的报错后项目跑起来的时间:
整整少了14.78s.真得不要小看console.log...
发送消息
实际开发场景 : 当前登录人的信息是保存在主页面的.最开始登陆进去的时候存入主页面的,然后其他页面用到的人员信息是主页面传出来的.在其中一个模块修改了人员岗位后.主页面没有重新获取人员信息.则会导致其他模块的信息有误.
解决思路: 在其中一个模块修改了人员岗位后,给主页面传一个消息.告诉它需要重新获取登录人的信息.(其他任意页面都能通过Events获取到这个消息)
// 修改人员岗位的模块代码内容:
import {Events} from 'ionic-angular';
export class SetupPage {
constructor(public ev: Events){}
// 岗位切换
chooseJob = ()=>{
if (this.territoryList.length <= 1) {
return;
}
let modal = this.modalCtrl.create("ChooseJobPage", { jobList:this.territoryList ,territoryID},{ cssClass: 'inset-modal'});
modal.onDidDismiss(data => {
if (data.action == 'save') {
// 在岗位切换成功后告诉主页面要重新获取人员信息
// 利用this.ev.publish('selectedStff')发消息.
this.staffService.SelectedTerritoryToken(json).then((info) => {this.ev.publish('selectedStff')})}
});
modal.present();
}
}
// 主页面代码内容:
import {Events} from 'ionic-angular';
export class MyApp {
constructor(public ev: Events){
// 接收到消息后,去调取获取人员信息接口
ev.subscribe("selectedStff", () =>{
this.getStaffInfo();
})
}
// 获取当前用户信息
getStaffInfo = () => this.staffService.GetStaffInfo().then((info) => {
// 重新赋值人员信息
this.currentStaff = info;
});
}