我希望在我正在构建的Angular Directive中使用一些验证功能。但是,该指令可能在表格内,也可能不在表格内。有没有办法访问模型的验证状态而不尝试访问表单的状态? 我的模板符合......
<select id="{{$id}}key" ng-model="newItem.key"
ng-options="key as key.label for key in tableKeys" required>
</select>
<span class="error" ng-show="newItem.key.$error.required">Required!</span>
<input id="{{$id}}value" type="text" ng-model="form.newItem.value" required/>
<span class="error" ng-show="newItem.value.$error.required">Required!</span>
<button ng-click="addItem()">Add Item</button>
(此处未看到任何验证消息)
除此之外,我还想addItem来检查验证状态
$scope.addItem = function(){
if(<do something to check validation>)
{
<do some other thing>
}
非常感谢任何帮助!
谢谢, 安德鲁
答案 0 :(得分:1)
我的理解是你要避免使用form.xyz。$ error属性进行错误检查。 我不知道如何使用指令,但我知道如何使用控制器。 在这种情况下,您可以在模型上使用$ scope。$ watch函数。
这将是这样的: -
1。)在你的控制器中,
$scope.$watch('newItem.key',function(){
if( <condition to validate> ==true)
{
$scope.selectError ="errorMessage";
}
});
2。)在你的HTML中
<select id="{{$id}}key" ng-model="newItem.key"
ng-options="key as key.label for key in tableKeys" required>
</select>
<span class="error" ng-show="selectError">{{selectError}}</span>
注意:这仅适用于select元素。您可以将文本输入绑定到模型,也可以为它执行相同的操作。
$ scope。$ watch函数将注意对指定模型的任何更改,并在发生任何更改时执行附带的代码。