【问题标题】:Angular 2 + Typescript displaying variable from within functionAngular 2 + Typescript在函数内显示变量
【发布时间】:2017-09-04 20:20:19
【问题描述】:

我对 typescript 和 Angular 2 完全陌生,在尝试输出到 Cordova / Angular 应用程序中的页面时遇到了一些麻烦。

页面(book.html):

<ion-header>
  <ion-navbar>
    <button ion-button menuToggle>
      <ion-icon name="menu"></ion-icon>
    </button>
    <ion-title>Book</ion-title>
  </ion-navbar>
</ion-header>

<ion-content padding>
  <h3>Book</h3>

  <p>
    Book page.
  </p>
  <p>
    <span>{{ oBookingDebug }}</span>

  </p>

</ion-content>

代码(book.ts):

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { InAppBrowser } from '@ionic-native/in-app-browser';

@Component({
  selector: 'page-book',
  templateUrl: 'book.html'
})
export class BookPage {
    public oBookingDebug: string = "";

    constructor(public navCtrl: NavController, public iab: InAppBrowser) {

        this.oBookingDebug="TEST"; // <-- WORKS AND SHOWS ON THE PAGE!!

        const browser = this.iab.create('http://**');
        browser.on("loadstop")
        .subscribe(
        () => {
            browser.executeScript(
            {
                code:'localStorage.getItem("bookingObject");'
            }).then(
                (oBooking)=>{
                    alert(oBooking); // Test
                    this.oBookingDebug="DAVE"; // <-- DOESNT WORK!!
                });
        },
        err => {
            console.log("InAppBrowser Loadstop Event Error: " + err);
        });

    }
}

如果您查看我的 cmets,您可以看到哪些有效,哪些无效,我如何访问页面以从 executescript 回调中输出,我希望此时能够显示到页面但也分配到一个变量,以供以后访问。

【问题讨论】:

    标签: javascript cordova typescript ionic-framework angular2-template


    【解决方案1】:

    似乎 Angular 更改检测让您的生活变得艰难,试试这个:

    import { ChangeDetectorRef } from '@angular/core'
    
    constructor(private cdr: ChangeDetectorRef) {}
    

    在你的回调中:

    (oBooking) => {
      this.oBookingDebug = 'DAVE';
      this.cdr.detectChanges();
    });
    

    这告诉 Angular 它应该检查是否有变化,以及是否在 DOM 树中需要渲染。 Here你可以找到文档。

    【讨论】:

    • 工作完美,谁知道会这么简单,谢谢。
    • 很高兴我能帮上忙!如果某件事(通常有效)没有按照您的预期进行,更改检测总是一个很好的提示。
    猜你喜欢
    • 2017-06-11
    • 1970-01-01
    • 2016-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 1970-01-01
    相关资源
    最近更新 更多