【发布时间】: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