Javascript 已禁用。Aurelia中的绑定无法正常工作
我有一个表单,表单中有一个自定义组件,其中包含某些字段。表单的末尾有一个按钮。按钮有Javascript 已禁用。Aurelia中的绑定无法正常工作,javascript,validation,aurelia,Javascript,Validation,Aurelia,我有一个表单,表单中有一个自定义组件,其中包含某些字段。表单的末尾有一个按钮。按钮有 disabled.bind="!(formValid && subFromValid)" 现在,在自定义组件上,我有一个变量“subFormValid”的双向绑定。只有在自定义组件中的验证有效时,subFormValid才有效。因此,子表单验证一些字段并将subFormValid设置为true。即使“formValid”为false,该按钮现在已启用。 我不明白为什么,这让
disabled.bind="!(formValid && subFromValid)"
现在,在自定义组件上,我有一个变量“subFormValid”的双向绑定。只有在自定义组件中的验证有效时,subFormValid才有效。因此,子表单验证一些字段并将subFormValid设置为true。即使“formValid”为false,该按钮现在已启用。
我不明白为什么,这让我发疯。我甚至在变量中添加了一个get函数,并在其中添加了控制台日志,就像这样
<button type="submit" disabled.bind="wholeFormValid">Submit</button>
<require from="components/smarty-streets"></require>
我在控制台上看到了超过一百万行,但我一直都能看到。当我第一次加载页面时,它正在记录
验证表单
真的
然后我填写了子表单,并检查了控制台。控制台显示
验证表单
真的
然而,该按钮现在已启用
出于某种原因,每当subFormValid=true时,不管formValid如何,按钮都会被启用
有人知道如何禁用按钮,除非满足两个条件吗?只要subFormValid为true,我所做的一切都会启用该按钮,即使控制台仍然记录“true”,这将禁用该按钮
为了提供帮助,如果有人想知道为什么表单中会有子表单,那是因为需要使用Smarty Streets验证地址,并且我们希望能够在其他地方重用表单的该部分,因此我为address部分创建了一个自定义组件,用于验证输入并验证地址。它正以这样的形式被调用
<button type="submit" disabled.bind="wholeFormValid">Submit</button>
<require from="components/smarty-streets"></require>
根据组件中的验证,我将值从true更改为false,反之亦然。我已尝试使用以下方法重新创建您的问题:
<input type="checkbox" checked.bind="formValid"/>
<input type="checkbox" checked.bind="subFormValid"/>
<button disabled.bind="wholeFormValid">Submit</button>
编辑:我还强烈建议在get()上使用
@computedFrom
装饰程序来减少aurelia的计算量。您可以阅读更多相关内容。我已尝试使用以下方法重新创建您的问题:
<input type="checkbox" checked.bind="formValid"/>
<input type="checkbox" checked.bind="subFormValid"/>
<button disabled.bind="wholeFormValid">Submit</button>
编辑:我还强烈建议在get()上使用@computedFrom
装饰程序来减少aurelia的计算量。你可以阅读更多关于这方面的内容
get wholeFormValid() {
console.log("validating form");
console.log(!(this.formValid && this.subFormValid));
return !(this.formValid && this.subFormValid);
}