gpt4 book ai didi

javascript - AngularJS:如何在 Controller 中手动将输入设置为 $valid?

转载 作者:IT王子 更新时间:2023-10-29 02:44:41 25 4
gpt4 key购买 nike

使用 TokenInput插件并使用 AngularJS 内置的 formController 验证。

现在我正在尝试检查该字段是否包含文本,如果包含,则将字段设置为有效。使用该插件的问题是它创建了自己的输入,然后是一个 ul+li 用于 STLying。

我可以访问 addItem (formname) 和我在 Controller 中的功能,我只需要将它设置为 $valid。

标记。

<form class="form-horizontal add-inventory-item" name="addItem">
<input id="capabilities" name="capabilities" token-input data-ng-model="inventoryCapabilitiesAutoComplete" data-on-add="addCapability()" data-on-delete="removeCapability()" required>
<div class="required" data-ng-show="addItem.capabilities.$error.required" title="Please enter capability."></div>
</form>

JS.

$scope.capabilityValidation = function (capability) {
if (capability.name !== "") {
addItem.capabilities.$valid = true;
addItem.capabilities.$error.required = false;
} else {
addItem.capabilities.$valid = false;
addItem.capabilities.$error.required = true;
}
};

当 TokenInput 输入内容并传入对象时,我正在运行 capabilityValidation 函数。

编辑:

发现 ng-model 在我的输入上做了一些事情并获得了自动完成结果,这就是为什么我不能让 ng-valid 工作,因为它是基于模型的。

$scope.inventoryCapabilitiesAutoComplete = {
options: {
tokenLimit: null
},
source: urlHelper.getAutoComplete('capability')
};

我没有编写这个自动完成实现,是否有另一种方法可以访问 ng-model attr 并将模型函数移动到其他地方?

最佳答案

您不能直接更改表单的有效性。如果所有后代输入都有效,则表单有效,否则无效。

您应该做的是设置输入元素的有效性。像这样;

addItem.capabilities.$setValidity("youAreFat", false);

现在输入(以及表单)无效。您还可以查看导致失效的错误。

addItem.capabilities.errors.youAreFat == true;

关于javascript - AngularJS:如何在 Controller 中手动将输入设置为 $valid?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15437435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com