【问题标题】:Unable to find object even when it is defined and accessible in console Ionic2/3即使在控制台 Ionic2/3 中定义和访问对象,也无法找到对象
【发布时间】:2018-11-26 17:31:40
【问题描述】:

我正在尝试在 Ionic3 应用程序的 html 前端显示从 .ts 文件中实现的 api 收集的数据。我的 ts 文件的代码是 export

class PlaceDetailPage {
   public storeid = this.navParams.get('sid');
   public storeloc = this.navParams.get('sloc');
   public storedata : any ;
   public loader = this.loading.create({
       content: "Please wait..."
    });
   constructor(public navCtrl: NavController, public navParams: NavParams,public globalProvider: GlobalProvider, public storage: Storage, public loading: LoadingController, public alertCtrl: AlertController, public menuCtrl: MenuController){

  }

  ionViewDidLoad() {
        this.loader.present()
    this.globalProvider.getstoreinfo(this.storeid,this.storeloc)
        .subscribe(data => {
            this.storedata = data.storeDto;
            console.log("storefeed");
            console.log(this.storedata);
            this.loader.dismissAll();
        });
    console.log('ionViewDidLoad PlaceDetailPage');
  }

  createPlan() {
    this.navCtrl.push(CreatePlanPage);
  }

}

但是当我执行上面的代码并尝试用 html 显示它时,我得到了以下错误

TypeError: _co.storedata is undefined

我还控制台记录了此错误后显示的结果,但由于此错误,我的 Html 内容无法执行。无法理解为什么该对象似乎对 html 不可用,但随后被 console.log 访问。

【问题讨论】:

  • 可以添加HTML吗?

标签: angular typescript ionic2 ionic3


【解决方案1】:

在您的类中,您声明类型但不声明值。下面的 var (storedata) 保持未定义,直到您的生命周期函数 (ionViewDidLoad) 稍后将数据分配给它。

公共存储数据:任意;

所以要解决这个问题:

一种选择是分配一些默认占位符数据:storedata: any = “placeholder”;

另一种用途?在您的模板绑定中指示该值可能不存在并将稍后/异步分配

.

请注意您的代码:尝试在构造函数方法中(在 {} 中)初始化您声明的变量,这更符合惯例。 你基本上声明并 ini 那些到位(那不是约定) - 这可能会给你带来问题......

【讨论】:

    猜你喜欢
    • 2013-07-06
    • 1970-01-01
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    • 2021-02-05
    • 2023-01-11
    相关资源
    最近更新 更多