标签: ionic2

Ionic 2:如何在选择值更改时调用方法

我是Ionic 2的新手,我阅读了Ionic 2文档并认为这段代码可行.它应该在更改时返回当前选择值并将其打印到控制台.

page.html中

<ion-select #C ionChange="onChange(C.value)"> 
                    <ion-option value="a">A</ion-option>
                    <ion-option value="b">B</ion-option>
</ion-select>
Run Code Online (Sandbox Code Playgroud)

page.ts

public CValue:String;
onChange(CValue) {
     console.log(CValue);
}
Run Code Online (Sandbox Code Playgroud)

但是控制台没有给出与此相关的任何内容.我错过了约束中的某些内容吗?

typescript ionic-framework ionic2 ionic3 angular

16
推荐指数
1
解决办法
3万
查看次数

在呈现"Page"之前获取数据异步

Page在呈现之前获取数据异步的正确方法是什么?

Angular2@CanActivate据我所知,建议装饰者.可悲的是,这不适用于Ionic2,至少不适合我和其他人

显然Ionic2是与@CanActivate装饰者做了一些事情, 但是看来它没有记录,我无法弄清楚它究竟做了什么.

然而,由于离子学缓存,这个人指出应该Ionics View States反正使用.他的例子如下:

  onPageWillEnter() { 
      return this._service.getComments().then(data => this.comments = data);
  }
Run Code Online (Sandbox Code Playgroud)

看起来他期待Ionic考虑返回的承诺,但是快速浏览一下 Ionics消息来源(至少我认为是这样)会忽略返回的值.因此,无法保证在呈现页面之前解析promise .这是onPage*的示例,以及它如何根据需要/预期执行.

所以我迷路了,一个人如何完成这个简单的任务呢?

在第一个链接中,建议在导航到页面之前解析数据,这会增加被调用者页面所需数据的知识.在我看来,这不是一个选项.

*编辑:添加负面示例

javascript typescript ionic2 ionic3 angular

15
推荐指数
2
解决办法
4323
查看次数

Ionic 2:EXCEPTION:没有NavController的提供者

我的离子2 /角度2应用程序有问题.

我得到了一个应用程序,其中"auth"部分是实现的.

代码如下所示:

 import {Nav, Platform, Modal, ionicBootstrap} from "ionic-angular";
import {NavController} from "ionic-angular/index";
import {StatusBar} from "ionic-native";
import {Component, ViewChild} from "@angular/core";
import {AngularFire, FirebaseListObservable, FIREBASE_PROVIDERS, defaultFirebase} from "angularfire2";
import {HomePage} from "./pages/home/home";
import {AuthPage} from "./pages/auth/home/home";

@Component({
  templateUrl: "build/app.html",
})

class MyApp {
  @ViewChild(Nav) nav: Nav;

  authInfo: any;
  rootPage: any = HomePage;
  pages: Array<{title: string, component: any}>;

  constructor(private platform: Platform, private navCtrl: NavController, private af: AngularFire) {
    this.initializeApp();

    this.pages = [
      { title: "Home", component: HomePage } …
Run Code Online (Sandbox Code Playgroud)

typescript ionic-framework ionic2 ionic3 angular

15
推荐指数
4
解决办法
3万
查看次数

如何在IONIC 2中设置100%宽度的离子选择元件

我想设置100%宽度的离子选择.

我试过像这样的css类:

.mySelect { width: 100% !important; }
Run Code Online (Sandbox Code Playgroud)

但它没有用.

ionic2

15
推荐指数
3
解决办法
2万
查看次数

离子2设备准备好在2000ms内没有开火

我在工作中ionic 2 beta 11IOS平台上运行使用的应用程序后ionic run ioswhite screen出现,得到了以下信息:

Native: deviceready did not fire within 2000ms. This can happen when plugins are in an inconsistent state. Try removing plugins from plugins/ and reinstalling them.
Run Code Online (Sandbox Code Playgroud)

有什么建议吗?究竟是什么问题?

cordova ionic-framework ionic2 ionic3

15
推荐指数
2
解决办法
7721
查看次数

如何处理Ionic 2上的后退按钮

如何处理Ionic 2上的后退按钮动作?

我希望能够知道该做什么,具体取决于向用户显示的页面.

我没有找到这个问题的好答案,但过了一段时间我发现自己有办法做到这一点.我要和大家分享一下.

谢谢

back-button back-button-control ionic2

15
推荐指数
3
解决办法
4万
查看次数

如何将jwt-decode类型定义导入Typescript(Ionic 2)

就在我认为我控制了打字稿中的打字时,我遇到了证明相反的事情.

这次我试图使用jwt-decode.我已经通过命令安装了类型定义typings i dt~jwt-decode --save

两个问题

1.当我看进index.d.ts我看到下面的

    declare module 'jwt-decode' {
        namespace JwtDecode {
        interface JwtDecodeStatic {
            (token: string): any;
        }
    }

    var jwtDecode: JwtDecode.JwtDecodeStatic;
    export = jwtDecode;
    export as namespace jwt_decode;
    }
Run Code Online (Sandbox Code Playgroud)

IDE(VS代码)在最后一行下显示错误"[ts]全局模块导出可能只出现在顶层"export as namespace jwt_decode;

2.如何导入?

我尝试导入声明..

   import { ??  } from 'jwt-decode';
Run Code Online (Sandbox Code Playgroud)

但我看不到要导入的任何内容.

我能找到的其他(很多)例子似乎都没有帮助.它必须简单,我只是不知道语法.

在此先感谢您的帮助.

[更新]经过多次阅读后,看起来打字已经被npm取代了.

所以我试过了

npm install --save jwt-decode
npm install --save @types/jwt-decode

// and import via
import * as JWT from 'jwt-decode';
Run Code Online (Sandbox Code Playgroud)

但仍然无法正确导入它.

[UPDATE2]我可以添加语句let …

typescript ionic2 typescript-typings angular

15
推荐指数
1
解决办法
2万
查看次数

离子2垂直对齐使用离子网格

我在Ionic 2的屏幕上有2个按钮,我想在屏幕中间(水平和垂直对齐)将它们对齐在一起(一个在另一个上面,但在一起).

我想使用离子网格,无填充,边距,浮点数或百分比.

所以我有这个

<ion-content>
  <ion-grid>
    <ion-row>
      <ion-col text-center>
        <button>button 1</button>
      </ion-col>
    </ion-row>
    <ion-row>
      <ion-col text-center>
        <button>button 2</button>
      </ion-col>
    </ion-row>
  </ion-grid>
</ion-content>
Run Code Online (Sandbox Code Playgroud)

随着<ion-col text-center>我可以水平对齐它们到中心,但是对于垂直对齐我不能看到任何东西,我可以申请,所以我尝试这样做:

ion-grid {
  justify-content: center;
}
Run Code Online (Sandbox Code Playgroud)

但什么都没发生.我检查过,这是应用于页面,但由于某种原因它不起作用.有任何想法吗?

flexbox ionic2

15
推荐指数
3
解决办法
3万
查看次数

如何在ionic2中使用content.scrollTo()进行离子滚动?

我尝试滚动到固定位置,例如scrollTo(500,20).假设您使用的设备宽度为300像素.滚动目标现在已超出屏幕范围,您必须向右滚动.

我通过以下方式解决了这个问题:

<ion-content>
    <ion-scroll scrollX="true" style="width:100%; height:100%; white-space: nowrap; ">
        <div style="width:1000px; ">
            [box1] [box2] [box3] [...]
        </div>
    </ion-scroll>
</ion-content>
Run Code Online (Sandbox Code Playgroud)

到这里一切都很好.如果我想通过按下按钮向右跳500像素,问题就开始了.向右滑动即可.我知道有一个功能可以做到这一点<ion-content>:

@ViewChild(Content) content: Content;
[...]
this.content.scrollTo(500, 500, 500); 
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不适用于我的情况.我认为问题是内容与设备大小有关,因此scrollTo()方法不会生效<ion-scoll>.如何使用scrollTo()方法<ion-scroll>代替<ion-content>

谢谢你的帮助!

typescript ionic-framework ionic2 ionic3 angular

15
推荐指数
2
解决办法
1万
查看次数

离子原生音频不适用于Android

我有问题使用本机音频cordova插件与离子.我使用npm安装了native

sudo npm install --save @ionic-native/native-audio
Run Code Online (Sandbox Code Playgroud)

并添加了一个名为smartAudio的新提供程序(下面附带代码).它在离子网络视图和iOS模拟器/真实设备上都像魅力一样......但由于某些原因,Android模拟器/真实设备上根本没有声音.

我有一个离子幻灯片元素,使用*ngFor生成图像幻灯片,像这样 -

<ion-slides (ionSlideDidChange)="muteAnimalSound()" pager dir="rtl" [loop]="true" >
  <ion-slide *ngFor="let slide of animals_slides; let i = index" style="background-color: white">
    <img src="{{slide.img_url}}" (click)="playAnimalSound($event)">
    </ion-slide>
  </ion-slides>
Run Code Online (Sandbox Code Playgroud)

playAnimalSound()函数看起来像这样 -

playAnimalSound(ev) {
    let animalSound = this.getAnimalBySource(ev.target.src);
    let currentIndex = this.slides.getActiveIndex();

    this.smartAudio.preload(currentIndex, animalSound[0].sound_url);
    this.smartAudio.play(currentIndex);
  }
Run Code Online (Sandbox Code Playgroud)

我的smartAudio提供程序是这样定义的 -

export class SmartAudio {

    audioType: string = 'html5';
    sounds: any = [];

    constructor(public nativeAudio: NativeAudio, platform: Platform) {

        if(platform.is('cordova')){
            this.audioType = 'native';
        }
        //testing atlassian sourcetree

    }

    preload(key, asset) {

        if(this.audioType …
Run Code Online (Sandbox Code Playgroud)

android cordova ionic2 angular

15
推荐指数
1
解决办法
1856
查看次数