【问题标题】:Ionic 2 : Access to a variable value from a provider or pageIonic 2:从提供者或页面访问变量值
【发布时间】:2017-11-28 12:51:31
【问题描述】:

我在 Ionic 2 中遇到了问题,也许你们中的某个人可以帮助我。 基本上,我有一个正在构建的提供程序,其中包括功能 BLE。我将此提供程序包含在我的页面中。从这个页面我可以毫无问题地调用该函数。但我想要的是访问作为提供者的公共变量。此变量是一个状态连接(真或假),我想从我的页面访问它以了解我是否与 BLE 连接。

这是我的代码

BleProvider.ts

@Injectable()
export class BleProvider {

public isConnected:boolean;

constructor(public http: Http) {
 console.log('Hello BleProvider Provider');
}

connectToDevice(device){
 this.isConnected = true;
}
}

我的页面 Login.ts

import { BleProvider } from '../../providers/ble/ble'
@IonicPage()
@Component({
selector: 'page-login',
templateUrl: 'login.html',
})
@NgModule({
providers: [BleProvider],
})

export class LoginPage {

constructor(public ble: BleProvider){
 ble.connectToDevice();
}

function testIsConnected(){
console.log("isConnected value: " + this.ble.isConnected);
}
}

console.log 将返回“isConnected 值:未定义。如果我在提供程序的构造函数中设置 isConnected(例如 this.isConnected = false),即使函数 connectToDevice 将 isConnected 设置为 true,当我从我的页面它将返回值 false。 有人可以向我解释发生了什么以及如何解决这个问题吗?

【问题讨论】:

  • 你的 typescript 编译器不会因为没有为 connectToDevice 函数提供 device 参数而抛出错误吗?
  • 我建议你在你的 ngOnInit 实现中运行 connecToDevice 方法
  • 你是如何调用 testIsConnected 方法的?检查您的 LoginPage 构造函数是否被调用?您首先需要创建/启动 LoginPage 对象和 BleProvider 对象。让 ble = new BleProvider();让 loginPage = new LoginPage(ble); loginPage.testIsConnected(); //这应该打印出isConnected变量的正确值。

标签: javascript angular variables typescript ionic2


【解决方案1】:

添加到我上面的评论。我认为这对你有用。

constructor(public ble: BleProvider){
}

ngOnInit(){
    this.ble.connectToDevice()
}

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-22
    • 2017-09-07
    • 2016-09-10
    相关资源
    最近更新 更多