ionic2 ModalController无法在websocket中显示

时间:2017-03-20 06:44:43

标签: ionic2 sockjs

import { Component } from '@angular/core';
import { NavController, Events, ModalController } from 'ionic-angular';

import * as SockJS from 'sockjs-client';
import { SomePage } from './somepage';

export class DashboardPage {
    sockjs: any;
    constructor(public navCtrl: NavController,
        public events: Events,
        private modalCtrl: ModalController) {

        this.initWebsocket();
    }

    initWebsocket() {
        this.sockjs = new SockJS('http://192.168.0.141:8080/ws-driver');

        this.sockjs.onopen = function () {
            console.log('open');
        };
        this.sockjs.onmessage = function (e) {
            console.log('message', e.data);
            alert('ok');
            let model = this.modalCtrl.create(SomePage);
            model.present();
        };
        this.sockjs.onclose = function () {
            console.log('close');
        };
    }
}

警告('ok')已经过程。 感谢

1 个答案:

答案 0 :(得分:2)

使用arrow functions代替function关键字,this在函数中引用function object。 尝试:

 this.sockjs.onmessage = (e)=> {
            console.log('message', e.data);
            alert('ok');
            let model = this.modalCtrl.create(SomePage);
            model.present();
        };

或设置self=this;

let self = this;
 this.sockjs.onmessage = function (e) {
            console.log('message', e.data);
            alert('ok');
            let model = self.modalCtrl.create(SomePage);
            model.present();
        };