Ionic 2 更新 [rootParams] 选项卡

2024-02-21

这与SO问题密切相关Ionic 2 将选项卡 NavParams 传递给选项卡 https://stackoverflow.com/questions/35162308/ionic-2-passing-tabs-navparams-to-tab

我的选项卡视图模板设置为:

 <ion-tabs #myTabs>
  <ion-tab [root]="tab1Root" tabTitle="Home"  tabIcon="home"></ion-tab>
  <ion-tab [root]="tab2Root" tabTitle="My Alerts" [rootParams]="paramsData" tabIcon="warning"></ion-tab>
  <ion-tab [root]="tab3Root" tabTitle="Settings" [rootParams]="paramsData" tabIcon="cog"></ion-tab>
....

并在类的构造函数中(主选项卡页面)我正在设置根参数.

this.paramsData = {
    settings: this.userSettings,
    facilities: this.facilities,              
 };

当我获得值时,这工作正常ionViewDidEnter()选项卡内子页面上的生命周期事件如下。

this.facilities = this.navParams.data.facilities;
let userSettings =  this.navParams.data.userSettings;

当我更新的时候根参数 in the 主选项卡页面通过监听如下事件,

listenToSaveEvents(){
    this.events.subscribe('save-settings', (userSettings) => {
      this.userSettings = userSettings;
      this.paramsData = {
        settings: this.userSettings,
        facilities: this.facilities            
      };    
    });

子页面仍然加载过时的数据。

该事件正在触发并且数据正在更新。当该子页面的 ionViewDidEnter() 再次被触发时,它仍然从 navParams 加载旧数据。

关于这一点再多说一点。

我这样做的原因是多个页面共享数据。但它们都需要一致的数据,并且只有一个视图更新它。首次加载时,主选项卡页面可能已经具有从其他服务获取的现有数据。

对此的更新

虽然我仍然想要解决这个问题,但我还是选择了上面链接中的答案 https://stackoverflow.com/a/35176544/1497565.

所以我最终创建了如下所示的服务。

import {Injectable} from '@angular/core';

 @Injectable()
 export class ParamService {

  public paramsData: any;

  constructor(){
    this.paramsData = {};
  }
}

显然,已添加到 AppModule 类中的提供程序数组中。然后使用它类似于我使用 NavParams 的方式,除了注入 ParamService。

this.facilities = this.paramService.paramsData.facilities;
this.userSettings =  this.paramService.paramsData.userSettings;

这仍然可以通过指定接口而不是类型来改进any对于 paramsData,因为可以将不同的参数集传递给其他页面/组件。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ionic 2 更新 [rootParams] 选项卡 的相关文章

  • 从字符串中修剪/删除制表符 ( "\t" )

    任何人都可以建议一种从字符串中删除制表符 t 的方法吗 CString 或 std string 例如 1E10 变为 1E10 hackingwords 的回答 https stackoverflow com questions 5562
  • 如何使用 *ngFor 迭代对象键

    我想在 Angular 2 中使用 ngFor 迭代 object object 问题是该对象不是对象的数组 而是包含更多对象的对象的对象 data id 834 first name GS last name Shahid phone 0
  • 如何在片段中的一个选项卡与另一个选项卡之间切换时动态刷新选项卡内容?

    我有一个名为 CourseActivity java 的活动 因为我有 2 个名为 UserCourses 和 FavouriteCourses 的选项卡 我在第一个选项卡中有一些课程列表 它有图标 在选择图标时 相应的粗略内容将添加到 F
  • 更改 Android JellyBean 上的操作栏高度

    我最近一直在开发一个 Android 应用程序 其中我需要为选项卡栏提供自定义布局和尺寸 到目前为止 我所做的方法是使用 Jake Wharton 的 ActionBarSherlock 库来支持 HoneyComb 之前的 Android
  • jQuery如何让Enter(Return)通过输入文本字段充当Tab键但最终触发提交按钮

    我已经屏蔽了 Enter 返回 键 实际上 将其转换为 Tab 键 因此 当在输入文本字段内按下时 它充当 Tab 键 这很好 但我需要它在最后一个字段中按下时触发提交按钮 下面是 Enter 键突变的代码 input keydown fu
  • 使用 cordova-plugin-file 从 cordova (ionic) 中的 SD 卡读取文件作为数组

    我在我的应用程序中使用需要作为缓冲区数组获取的音频文件 为此 我让用户选择一个文件 使用 Ionic Cordova FileChooser 插件 https ionicframework com docs native file choo
  • 如何在 PyCharm 中“查看”/突出显示制表符和空格以检查缩进?

    这可能听起来很愚蠢 但我还是个新手 有没有明确的方法可以发现 PyCharm 中的制表符或空格位于错误的位置 或者甚至以可视方式显示所有制表符和空格 我只是花了很长时间在函数的 Def 行寻找 无效语法 错误的问题 我原以为这可能仍然是一些
  • Vim:垂直选项卡列表可以吗?

    是否可以让 vim 的选项卡列表垂直显示在编辑器的左侧 这确实很有帮助 但我还没有找到任何可以做到这一点的插件 我对谷歌很烂吗 我同意兰迪关于选项卡使用的观点 但前段时间我也在寻找在 gvim 中添加垂直制表符的可能性 为此 您必须修改源
  • Material UI 选项卡:嵌套选项卡会导致无效值错误

    嵌套选项卡会导致控制台中出现以下错误 梅 value提供给 Tabs 组件无效 带有这个的选项卡value 0 不是文档布局的一部分 确保文档中存在或不存在该选项卡项display none In the 基本选项卡 https mui c
  • 复选框警报控制器 - 添加 3 个按钮

    我用 IONIC 2 Beta 版本制作了一个应用程序 我正在使用复选框警报控制器 并添加两个按钮 确定 和 取消 现在我需要在警报控制器中再添加一个按钮 我在下面实现了添加一个按钮 alert addButton Cancel alert
  • ionic2 对菜单项应用 ngx-translate

    我正在使用 ngx translate 来支持多语言 并且运行良好 但我也想申请菜单项 我该如何实现这一目标 我有 3 个菜单项 我想更改每个标题的语言 ts file appPages PageObj title Profile comp
  • Android 后退按钮无法与 Flutter 选项卡内的导航器配合使用

    我需要在每个选项卡内有一个导航器 因此当我推送新的小部件时 选项卡栏会保留在屏幕上 代码运行得很好 但是 android 后退按钮正在关闭应用程序而不是运行 Navigator pop import package flutter mate
  • 带有 JEditable 字段的 Tab 键

    我有一个使用 JQuery 和 Jeditable 在页面上创建可编辑文本元素的页面 在编辑元素时 我希望能够从一个元素切换到下一个元素 我不确定如何 使用jeditable或jquery捕获tab键事件 keycode 9 一旦检测到该事
  • ionic 2 本地存储无法将检索到的值设置为变量

    我试图将从 get 函数检索到的值设置为在外部声明的变量 但无法这样做 var dt retrieve this local get didTutorial then value gt alert value dt value consol
  • php将多维数组内爆为制表符分隔行

    我有一个多维数组 BlockData 其中有 13 个维度和 n 个数组元素 我需要将此数组内爆回单个长字符串 其中元素由 n 换行和尺寸由 t tabs 我尝试过使用array map 功能没有成功 需要帮助来完成此任务 请帮忙 这可以使
  • 使用 CSS 的平行四边形导航背景

    我正在尝试创建此导航菜单 绿色突出显示是活动页面 灰色是悬停状态 我可以使用以下 CSS 制作平行四边形 ul nav li a text decoration none padding 4px 10px border radius 3px
  • IONIC 2 Google 地图标记点击事件

    我正在尝试使用此代码从数据库中获取所有标记 但问题是 当我单击标记时 我总是从数据库中获取最后一项 当 alert record id 弹出窗口始终显示每个标记的最后一个项目 我想在单击每个标记时显示它们的 id loadMarker th
  • 从 SERVICE 执行 COMPONENT 方法

    我正在尝试执行一个组件method from a 服务方式 我看到了另外 2 个线程 Link1 如何从服务调用组件方法 https stackoverflow com questions 40788458 how to call comp
  • 如何使 ion-grid 像 Ionic 2 中的按钮一样可点击

    我使用 ion grid 设计了表格 但我的问题是要使其像按钮一样可点击 我只能使用 click functionX 来调用函数 例如这是我的网格
  • ionic 2 使用 ion-grid 垂直对齐

    我在 Ionic 2 的屏幕上有 2 个按钮 我想将它们在屏幕中间对齐 一个在另一个之上 但在一起 水平和垂直对齐 我想使用离子网格 没有填充 边距 浮动或百分比 所以我有这个

随机推荐