ionic 2,刷新带有 2 个或更多徽标的模态页面

Posted

技术标签:

【中文标题】ionic 2,刷新带有 2 个或更多徽标的模态页面【英文标题】:ionic 2, refresh a modal page with 2 or more logos 【发布时间】:2017-11-06 18:46:52 【问题描述】:

在启动画面关闭后,我调用了一个模式页面。 这是赞助商的页面。来自 API 的 Logo (imagem) 和一些文本 (texto)。 模态在 3000 毫秒后自动关闭 起初我将延迟代码放在构造函数中,它工作正常。 有一个赞助商,没有问题,有 2 个或更多标志,不工作。

它只显示最后一个徽标,即使我延迟刷新屏幕。

如何为3s显示2个或多个logo?

如何刷新视图?

patrocinio.html

<ion-content padding class="fundo-titulo">

  <div style="margin-top:40%">
      <br/>
      <img src="http://example.com/api/imagens/Patrocinios/imagem" >
      <br /> 
      <h3 text-center> texto </h3>
  </div>
</ion-content>

patrocinio.ts

import  Component  from '@angular/core';
import  IonicPage, NavController, NavParams, ViewController, LoadingController  from 'ionic-angular';
import  Conexao  from '../../providers/conexao';

@IonicPage()
@Component(
  selector: 'page-patrocinio',
  templateUrl: 'patrocinio.html',
)
export class Patrocinio 

  public patrocinios: any;
  public tempo: string;
  public imagem: string;
  public texto: string;

  constructor(
    public navCtrl: NavController,
    public navParams: NavParams,
    public loading: LoadingController,
    public viewCtrl: ViewController,
    public conexaoServico: Conexao) 

  

  ionViewDidLoad() 
    let loader = this.loading.create(
     // spinner: 'ios',
     // content: 'Carregando ...',
    );

    loader.present().then(() => 
      this.conexaoServico.getSponsors('1').subscribe((data) => 
        this.patrocinios = data.Patrocinios;
        console.log(this.patrocinios);
        console.log(this.patrocinios.length);
      );
      loader.dismiss();
    );
  

  ionViewDidEnter() 
    console.log(this.patrocinios);
    console.log(this.patrocinios.length);

    var i = 0;
    for (i = 0; i < this.patrocinios.length; i++) 

      this.imagem = this.patrocinios[i].Imagem;
      this.texto = this.patrocinios[i].Texto;
      console.log(this.imagem);

      //this.navCtrl.resize;

      var delayInMilliseconds = 3000;
      console.log('aqui')
      setTimeout(function () 
        this.viewCtrl.dismiss();
        //viewCtrl.dismiss();
      , delayInMilliseconds);
    
  

【问题讨论】:

【参考方案1】:

您在 ionViewDidEnter 中循环出现逻辑错误。您要做的是在 delayInMilliseconds 期间调用一个函数来更新您的模态。 stackblitz 有效,但可能不是最好的方法。

请参阅下面的关键代码:

home.html

<ion-content padding>
  <div>sponsor</div>
</ion-content>

home.ts

export class HomePage 
  sponsor : string = '';
  sponsors :string[] = ['hello', 'world'];
  index : number = 0;
  constructor(public navCtrl: NavController) 
    let intervalHandle = setInterval(()=> 
      this.sponsor = this.sponsors[this.index];
      this.index++;

      if(this.index == this.sponsors.length)
      
        clearInterval(intervalHandle);
      
    ,2000);
  


【讨论】:

谢谢菲利普。解决了这个问题,但我有这个模块的最后一个:它是一个模式页面,在最后一个赞助商的标志出现后(加上延迟时间),这个页面将被关闭。当我将 viewCtrl.dismiss() 放在 clearInterval (intervalHandle) 之后时,会显示徽标并在此后不久,没有延迟时间。我该如何解决这个问题?又来了 对不起,我会解释的更清楚。赞助商页面是一个模态页面。我在clearInterval(intervalHandle)之后使用this.viewCtrl.dismiss(),也就是循环结束。但是最后一个赞助商出现并且页面关闭。我需要在它关闭视图之前延迟。 setTimeOut(()=&gt; this.viewCtrl.dismiss(); ,1000); 再来一次。完美。

以上是关于ionic 2,刷新带有 2 个或更多徽标的模态页面的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ionic 2 中更改推送通知的图标/徽标

Ionic 4/5 - 带有服务的模态窗口中的谷歌地图

Ionic 2:添加新的动态选项卡后刷新选项卡视图

像 Ionic 2 中的模态一样警报

如何使用不同的 VAO、VBO 绘制 2 个或更多对象?

谷歌地图以Ionic 2中的模态显示