首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Ionic 2中将值从服务传递到页面

问在Ionic 2中将值从服务传递到页面
EN

Stack Overflow用户
提问于 2016-10-15 10:55:38
回答 1查看 533关注 0票数 1

我用下面的代码创建了一个服务。我编写了两个函数,一个用于使用ip和端口创建本机存储,另一个用于从本机存储中获取值。

DatabaseService

代码语言:javascript
复制
export class DatabaseService {
  ...
  public ip: string;
  public port: string;
  ...
  public createConnectionInfo(ip: string, port: string) {
    NativeStorage.setItem('connectionStorage', { ip: ip, port: port })
      .then(
        () => console.log('Stored Connection Information!'), //Working
        error => console.error('Error storing connection information', error)
      );
  }
  ...
  public getConnectionInfo() {
    this.platform.ready().then(() => {
      NativeStorage.getItem('connectionStorage').then(data => {
        this.ip = data.ip; // I'm setting the ip in this public variable
        this.port = data.port;
        console.log(this.ip); //Works
      }, error => {
        this.navCtrl.push(SettingPage);
      });
    });
  }
  ...
}

SettingPage

代码语言:javascript
复制
export class SettingPage {
  connection: any;
  service: DatabaseService;
  ip: string;
  port: string;
  constructor(public navCtrl: NavController, platform: Platform, service: DatabaseService) {
    this.service = service;
    platform.ready().then(() => {
      if(true){ 
        console.log(this.service.ip+" IP FROM THE SERVICE"); \\I'm trying to get the ip from the service.
      }
    });
  }
  ...
}

我能够创建本机存储,并从本机存储中检索值,但无法将其从服务传递到设置页。请给我建议。谢谢。我还在努力解决这个问题。请帮帮忙。

我的离子信息

代码语言:javascript
复制
Cordova CLI: 6.3.1                                                                                                              
Gulp version:  CLI version 3.9.1                                                                                                
Gulp local:                                                                                                                     
Ionic Framework Version: 2.0.0-rc.1                                                                                             
Ionic CLI Version: 2.1.0                                                                                                        
Ionic App Lib Version: 2.1.0-beta.1                                                                                             
ios-deploy version: Not installed                                                                                               
ios-sim version: Not installed                                                                                                  
OS: Mac OS X El Capitan                                                                                                         
Node Version: v6.7.0                                                                                                            
Xcode version: Xcode 7.3.1 Build version 7D1014
EN

回答 1

Stack Overflow用户

发布于 2016-10-17 14:27:27

您可以使用getConnectionInfo方法,以获得您的ip地址,如果您对该方法进行了一些调整以返回承诺。就像这样:

代码语言:javascript
复制
public getConnectionInfo() {
  return this.platform.ready().then(() => NativeStorage.getItem('connectionStorage'))
    .then(data => {
      this.ip = data.ip;
      this.port = data.port;
      console.log(this.ip);
      return data;
    }).catch(error => {
      this.navCtrl.push(SettingPage);
      return error;
    });
  });
}

然后,在SettingPage上,而不是直接访问将调用getConnectionInfo的值,如下所示:

代码语言:javascript
复制
export class SettingPage {
  connection: any;
  service: DatabaseService;
  ip: string;
  port: string;
  constructor(public navCtrl: NavController, platform: Platform, service: DatabaseService) {
    this.service = service;
    platform.ready().then(() => this.service.getConnectionInfo())
      .then(() =>{
        if(true){ 
          console.log(this.service.ip+" IP FROM THE SERVICE");
        }
    });
  }
  ...
}

您可能需要对这段代码做一些调整,但它应该能够正常工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40058151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档