填充 javascript 对象后再次触发 get 方法
Fire get method again once javascript object has been populated
我有以下内容:
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>
所以客户对象最初是空的,直到 activate() 被触发时才会被填充。这意味着在第一次进入屏幕时,div 是空白的,但在触发 getCustomerData() 后不会更新。我如何使 customerFullName 依赖于 activate(即仅在 activate() 完成后触发此方法),或让 customerFullName 在客户有数据后再次触发?
我认为代码中存在错误 - activate 方法应该有 this.getCustomerData();
而不是 getCustomerData();
。
如果您想延迟模板的 binding/rendering 直到加载客户数据之后,您应该 return 来自激活方法的承诺,如下所示:return this.getCustomerData();
(假设你真正的 getCustomerData
return 是一个承诺)。
这是一个有效的 plunker:http://plnkr.co/edit/kBHq4p?p=preview
我有以下内容:
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>
所以客户对象最初是空的,直到 activate() 被触发时才会被填充。这意味着在第一次进入屏幕时,div 是空白的,但在触发 getCustomerData() 后不会更新。我如何使 customerFullName 依赖于 activate(即仅在 activate() 完成后触发此方法),或让 customerFullName 在客户有数据后再次触发?
我认为代码中存在错误 - activate 方法应该有 this.getCustomerData();
而不是 getCustomerData();
。
如果您想延迟模板的 binding/rendering 直到加载客户数据之后,您应该 return 来自激活方法的承诺,如下所示:return this.getCustomerData();
(假设你真正的 getCustomerData
return 是一个承诺)。
这是一个有效的 plunker:http://plnkr.co/edit/kBHq4p?p=preview