Ionic
约 2 分钟阅读
- Codepen Ionic链接codepen.io/ionic/pens/publicCodepen Ionic · Plugins · cordova-plugin-wechat · Yarn Issue #648 · Tabs 页面黑屏 · Uncaught (in promise): nav controller was destroyed笔记:Ionic
- Plugins
- Yarn Issue #648GitHub Issueyarnpkg/yarn#648
# 安装
yarn global add ionic
# 确保 ionic 在路径下
export PATH="$(yarn global bin):$PATH"
# 创建一个基于 web 的 tab 切换 app
# -s 使用 SCSS
ionic start app-demo tabs
cd app-demo
ionic serve
# 查看可用的启动模板
ionic start -l
# 创建一个 cordova 应用
# --skip-link 不链接 ionic cloud 账号
# --skip-deps 不自动下载依赖
ionic start --cordova --skip-link --skip-deps -n '我的应用' myapp tabs
# 可以考虑将 ionic 作为开发依赖, 以避免和全局的版本冲突
# 这样也可以直接使用 yarn 执行 ionic 来生成内容
# 例如 yarn run -- ionic g page MyHome
yarn add --dev ionicFAQ
ISSUES
- Tabs 页面黑屏GitHub Issuedriftyco/ionic#8508
- Uncaught (in promise): nav controller was destroyedGitHub Issuedriftyco/ionic#11454
- Ionic v3 - Runtime Error Uncaught (in promise): removeView was not foundGitHub Issuedriftyco/ionic#11443
- Deferred long-running timer task(s)GitHub Issueangular/material#8236
.md-scroll-mask { position: initial;}
添加自定义图标
ion-icon 可以使用自定义的图标名字, 只需要添加响应的 css 即可.
/* 添加自定义图标 */
.ion-ios-MYICON,
.ion-ios-MYICON-outline,
.ion-md-MYICON {
content: url(../../images/MYICON.png); /* 可以用图标, svg 或者 webfont */
width: 24px;
height: 32px;
padding: 6px 4px 2px;
margin: 5px;
opacity: 0.9;
}No provider for NavController
- #5543GitHub Issueionic-team/ionic#5543
- #9581GitHub Issueionic-team/ionic#9581
- 无法在 Service 中注入 NavController
- 解决方法
- 通过
Events进行中转 - 注入
App, 然后
- 通过
get navCtrl(){
return this.app.getRootNav()
}添加页面
# 生成一个页面
# v2.2.3
# 会生成一个 User 页面, 如果想要使用 UserPage 这样的名字, 需要手动进行重构
# 除了会生成一个页面, 也会生成一个模块 user.module, 应该在 app.module 中导入该模块
yarn run -- i g page activity-detail修改 app.module.ts, 在 import 那里添加生成页面的 Module, 例如 ActivityDetailModule
默认生成的页面名字没有 Page 后缀, 例如上面的生成结果为 ActivityDetail, 如果要添加 Page 后缀, 可以在 activity-detail.ts, 选中类名然后进行重命名重构.
设置标题
在进行 Web 端开发但不需要 NavBar 时, 网页的 Header 不会发生改变, 此时需要手动控制
class MyPage{
constructor(private app: App) {
}
ionViewDidEnter() {
// 当进入该页面时修改 title
this.app.setTitle('我的页面');
}
}路由
Ionic 使用的内置状态来控制路由, 而不是使用的基于 URL 的路由, 在 Ionic 中,使用 URL 来控制路由的叫做 DeepLinker, 但是由于 Web 的优先级对于开发团队来说相对较低, 因此支持上面有所欠缺.
- Tab 页面路由会有些问题
- 参考
IonicModule.forRoot(MyApp, null,{/* DeepLinkConfig */});每个页面都可以对应一个路径上的名字, 其元数据可以使用 @IonicPage 来配置, 也可以再 DeepLinkConfig 进行统一配置. 建议在 DeepLinkConfig 配置以便于统一管理.
路由的跳转可以在 html 中添加 NavPush 或者 NavPop 指令控制, 或者通过直接注入 NavController 来控制.
关联信息
反向链接、本文链接的其他页面和外部资料。
参考资料
GitHub10 条
- angular/material#8236github.com/angular/material/issues/8236
- driftyco/ionic#11443github.com/driftyco/ionic/issues/11443
- driftyco/ionic#11454github.com/driftyco/ionic/issues/11454
- driftyco/ionic#8508github.com/driftyco/ionic/issues/8508
- driftyco/ionic#9012github.com/driftyco/ionic/issues/9012
- driftyco/ionic#9183github.com/driftyco/ionic/issues/9183
- ionic-team/ionic#5543github.com/ionic-team/ionic/issues/5543
- ionic-team/ionic#9581github.com/ionic-team/ionic/issues/9581
- xu-li/cordova-plugin-wechatgithub.com/xu-li/cordova-plugin-wechat
- yarnpkg/yarn#648github.com/yarnpkg/yarn/issues/648
其他外链5 条
- codepen.io/ionic/pens/publiccodepen.io/ionic/pens/public
- ionicframework.com/docs/api/components/nav/NavPopionicframework.com/docs/api/components/nav/NavPop
- ionicframework.com/docs/api/components/nav/NavPushionicframework.com/docs/api/components/nav/NavPush
- ionicframework.com/docs/api/navigation/NavControllerionicframework.com/docs/api/navigation/NavController
- www.cnblogs.com/yanxiaodi/p/6086007.htmlwww.cnblogs.com/yanxiaodi/p/6086007.html