我有以下几点:

head.js

export class Header{
    customer={};

  getCustomerData(){
    this.customer={
      first:'test',
      middle:'middle',
      last:'test'
    }
  }

  activate() {
      getCustomerData();
  }
  get customerFullName(){
    return `${this.customer.first} ${this.customer.middle} ${this.customer.last}`;
  }
}


head.html

<div class="head">
    ${customerFullName}
</div>


因此,客户对象最初是空的,并且直到激活()被激活之前,它才被填充。这意味着在第一次进入屏幕时,div为空白,但是在触发getCustomerData()之后不会更新。我该如何使customerFullName依赖于activate(即,仅在activate()完成后才触发此方法),或者让customerFullName在客户有数据后再次触发?

最佳答案

我认为代码中存在一个错误-Activate方法应该使用this.getCustomerData();而不是getCustomerData();

如果要延迟模板的绑定/渲染,直到加载完客户数据后,您应该从激活方法中返回一个承诺,例如:return this.getCustomerData();(假设您的真实getCustomerData返回一个承诺)。

这是一个工作正常的人:http://plnkr.co/edit/kBHq4p?p=preview

09-17 17:05