Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 已禁用。Aurelia中的绑定无法正常工作_Javascript_Validation_Aurelia - Fatal编程技术网

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);
}