law*_*ion 41 ionic-framework ionic2
我开始使用Ionic 2创建我的第一个应用程序,并通过大量的试验和错误已达到一个点,没有数量的谷歌搜索可以找到任何帮助.
我正在尝试将一些NavParams传递给选项卡.NavParams在父标签页中可用:
@Page({
templateUrl: 'build/pages/tabs/tabs.html'
})
export class TabsPage {
constructor(params: NavParams) {
this.params = params;
console.log(this.params); // returns NavParams {data: Object}
// this tells the tabs component which Pages should be each tab's root Page
this.tab1Root = Tab1;
this.tab2Root = Tab2;
this.tab3Root = Tab3;
}
}
Run Code Online (Sandbox Code Playgroud)
但我似乎无法在选项卡本身中获取NavParams:
@Page({
templateUrl: 'build/pages/tab1/tab1.html'
})
export class Tab1 {
constructor(nav: NavController, params: NavParams, platform: Platform) {
this.nav = nav;
this.params = params;
this.platform = platform;
console.log(this.params); // returns NavParams {data: null}
}
}
Run Code Online (Sandbox Code Playgroud)
我只是不完全确定如何将标签页面中的参数传递给标签本身,或以某种方式从标签父级请求参数.我假设像:
this.tab1Root = Tab1(this.params);
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激!
Ste*_*tti 65
这个问题已经有几个星期了,所以你可能已经找到了答案.这个功能在二月份添加:https://github.com/driftyco/ionic/issues/5475.
从原始标签页获取代码,假设参数被传递到"父"标签页,我们希望将其存储在一个名为的属性中fooId(这可能是一个对象,或者只是一个简单的整数或字符串值,无论如何) :
@Component({
templateUrl: 'tabs.html'
})
export class TabsPage {
constructor(params: NavParams) {
this.params = params;
console.log(this.params); // returns NavParams {data: Object}
this.fooId = this.params.data;
// this tells the tabs component which Pages should be each tab's root Page
this.tab1Root = Tab1;
this.tab2Root = Tab2;
this.tab3Root = Tab3;
}
}
Run Code Online (Sandbox Code Playgroud)
然后在你的tabs.html中,你可以使用rootParams属性这样引用它(rootParams在这里的文档中引用):
<ion-tabs>
<ion-tab tabTitle="Tab1" [root]="tab1Root" [rootParams]="fooId"></ion-tab>
<ion-tab tabTitle="Tab2" [root]="tab2Root" [rootParams]="fooId"></ion-tab>
<ion-tab tabTitle="Tab3" [root]="tab3Root" [rootParams]="fooId"></ion-tab>
</ion-tabs>
Run Code Online (Sandbox Code Playgroud)
然后在Tab1页面中,您可以像任何其他页面一样引用您的NavParams,并且传递的值foodId将在那里.
sta*_*h_R 12
对于那些还没有想通的人.....
我搜索了很多,我得到的唯一答案是使用本机存储或使用服务或会话存储 ......但这不是我想要的......所以,如果你在Tabs.ts页面的NavParams中有数据并希望它以[rootParam]的形式传递给相应的选项卡 ...那么您需要做的是将您的NavParams分配给 Tabs.ts页面中的变量而不是将其直接绑定到 HTML中的[rootParams]页.喜欢 ..
tabs.ts
constructor(public navParams: NavParams) { }
Run Code Online (Sandbox Code Playgroud)
tabs.html
<ion-tab [root]="tab1Root" [rootParams]="navParams.get('single')" tabTitle="Customer"></ion-tab>
<ion-tab [root]="tab2Root" [rootParams]="navParams.get('second')" tabTitle="Map"></ion-tab>
Run Code Online (Sandbox Code Playgroud)
要么
tabs.html
<ion-tab [root]="tab1Root" [rootParams]="navParams.data" tabTitle="Customer"></ion-tab>
Run Code Online (Sandbox Code Playgroud)
tab1.ts
constructor( public navParams: NavParams) {}
ionViewDidLoad() {
console.log('ionViewDidLoad tab1Page');
console.log(this.navParams.data);
}
Run Code Online (Sandbox Code Playgroud)
在我知道的Tab-Pages中没有直接传递Params的方法.
我认为您可以使用NavController来使其工作.
一个简洁的解决方法是将参数放入注入的服务: app/services/params.js:
import {Injectable} from 'angular2/core';
@Injectable()
export class Params{
constructor(){
console.log("Params()");
this.params={};
}
}
Run Code Online (Sandbox Code Playgroud)
并在控制器中:
import {Params} from '../../services/params'
@Page({
templateUrl: 'build/pages/home/home.html',
})
export class XYPage{
constructor(nav: NavController,platform: Platform, params: Params) {
console.log("XYPage()",this);
console.log("XYPage()", params.params);
params.params={id="001"};
Run Code Online (Sandbox Code Playgroud)
别忘了在@App中注入服务
| 归档时间: |
|
| 查看次数: |
41314 次 |
| 最近记录: |