我想知道为什么Aurelia oneTime绑定表现得像这样。 我有这样的HTML。
<span> ${dbaName & oneTime}</span>
<input type="text" value.bind="dbaName" spellcheck="false" />
My view-model在打字稿中就像这样,在ajax调用成功之后,我将值赋给dbaName:
export class VendorGeneral
{
dbaName:string;
constructor()
{
}
activate()
{
$.ajax({
url: "servicecall",
context: document.body
}).done(function() {
this.dbaName = "DATA ADMIN";
});
}
}
现在什么HTML会将输出显示为:
<span> ${dbaName & oneTime}</span> **blank**
<input type="text" value.bind="dbaName" spellcheck="false" /> **DATA ADMIN**
在Span中,我将获得空白值或空字符串,而在文本框中,我将获得Data Admin作为正确的值。
请让我知道 oneTime 绑定为什么提供空字符串以及如何解决此问题?
答案 0 :(得分:3)
oneTime
,顾名思义,只绑定一次,所有进一步的更改都将被忽略。呈现视图时,dbaName
的值为undefined
。因此,跨度的内容将为undefined
,等于“无”;
我发现你正在使用activate
,但是你的使用方式是错误的。如果希望在返回ajax调用后呈现视图,则必须在activate方法中返回promise。类似的东西:
activate {
return yourPromise()
.then(() => this.dbaName = 'admin');
}
我建议您使用aurelia-fetch-client
代替$.ajax
。如果您仍想使用$.ajax
,可以尝试此操作(未经测试的代码):
activate() {
return $.ajax({
url: "servicecall",
context: document.body
}).then(() => {
this.dbaName = "DATA ADMIN";
});
}