0

我有一个具有以下模板的指令 barFoo:

<div>
    ....
    <input ng-model="data">
</div>

该指令在表单中使用!现在,在这个指令中,我想做类似的事情

element.find('input').$setValidity('bar-valid', false);

但是,这不起作用。此外,输入字段没有名称属性。如果没有“名称”属性,有什么方法可以做到这一点?

更新:另一种解决方案是在指令元素上定义 ngModel

<bar-foo ng-model="data.value"></bar-foo>

并将指令改写如下

....
    .directive('barFoo', function () {
        return {
            require: 'ngModel',
            ...
            link: function (scope, element, attrs, ctrl) {
                ctrl.$setValidity('bar-valid', false);
            }
    });
4

2 回答 2

1

您可以使用 name="itAmazingName" 调用指令并在指令模板中使用它,这应该可以解决您的问题

于 2014-03-03T10:41:57.030 回答
1

看看这个问题:AngularJS Form Validation Directive $setValidity on element

我会给你你需要的东西,包括代码

于 2014-03-03T10:07:22.487 回答