【问题标题】:Angular - validation messages for a form input directive with isolated scopeAngular - 具有隔离范围的表单输入指令的验证消息
【发布时间】:2015-02-15 18:56:12
【问题描述】:

我想我正在慢慢发疯。看似简单的问题却让我头疼:(

我有一个使用隔离范围的自定义输入元素指令的表单。

我只是希望能够根据输入元素“必需”属性的有效性显示错误消息,但我似乎在绕圈子。我不太了解这种情况下的绑定。

请看我这里的小提琴:

http://jsfiddle.net/brogueady/zwbbLggL/

我希望错误消息“无效”出现在输入字段的右侧,因为它是空的。

HTML 是

<div ng-app="UIComponents">
<form ng-submit="formSubmit()" name="vrmForm" >
    <at-input name="registration" label="Registration" form="vrmForm" model="vrmLookup.registration" minlength="3" required>
    </at-input>
</form>
</div>

JS是

uiComponents.directive('atInput', function () {
    return {
        // use an inline template for increased
        template: '<div>{{label}}</div><input name="{{name}}" required type="text" ng-model="model"/>  <span class="error" ng-show="form.{{name}}.$error.required">Invalid</span>',
        // restrict directive matching to elements
        restrict: 'E',
        scope: {
            name: '@',
            form: '=',
            model: '=',
            label: '@'
    },
    compile: function(element, attr) {
        var input = element.find('input');

        if (!_.isUndefined(attr.required)) {
            input.attr("required", "true");
        }

    }
};
});

谢谢。

【问题讨论】:

    标签: angularjs binding angularjs-directive custom-component


    【解决方案1】:

    您的 $scope.form.name 属性不能是角度绑定表达式。从您的指令中返回一个模板函数并构建模板字符串:

        template: function($element, $attr) {
            return '<div>{{label}}</div><input name="' + $attr.name + '" required type="text" ng-model="model"/>  <span class="error" ng-show="form.' + $attr.name + '.$error.required">Invalid</span>';
        },
    

    Demo

    【讨论】:

    • 这绝对解决了这个特殊问题。谢谢你。而不是在 ng-show 中使用表达式,您知道为什么这也不起作用吗? ng-show="form.registration.$error.required"
    • 表单的名称+带有ngModel的字段名称是存储在$scope上的。这就是 Angular 的工作原理——你不需要做任何特别的事情来让它工作
    猜你喜欢
    • 1970-01-01
    • 2014-08-13
    • 2014-05-26
    • 2019-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-03
    • 2013-09-04
    相关资源
    最近更新 更多