使用TokenInput插件并使用AngularJS内置的formController验证。
现在,我正在尝试检查该字段是否包含文本,然后将其设置为有效(如果包含)。使用该插件的问题是它创建了自己的输入,然后创建了ul + li进行存储。
我可以访问addItem(formname)和我在控制器中的功能,我只需要将其设置为$ 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并将模型函数移至其他位置吗?
由于我所有其他表单都在使用它,因此我想保留它所提供的控件。插件创建的输入实际上在我的原始输入中设置了值,然后我需要在我的验证中对其进行检查,但是当有输入值时,它不会更新formController。
—
Christopher Marshall
我故意缩短了标记以隔离输入。我还有很多相同形式的输入。
—
Christopher Marshall
好的。您是否尝试
—
Mark Rajcok
addItem.capabilities.$valid = true
和/或适当地将addItem.capabilities。$ error.required设置为true或false?
我都尝试过这两个。我将更新问题以向您显示。$ valid和$ error.required在控制器的断点上显示为undefined,但addItem.capabilities仍具有数据。
—
Christopher Marshall
<div ... data-ng-show="capabilities_error" ...>
换句话说,您是否/需要使用FormController是有原因的呢?