javascript - 来自 ngMessages 的 AngularJS make 指令

标签 javascript html angularjs frontend

我想创建一个指令,允许我在输入附近生成验证消息 - 基于 ngMessages(如示例所示)。我有这个有效的 HTML 示例:

<div class="field">
    <div class="ui right icon input">
        <input type="email" name="email" ng-model="vm.user.email" placeholder="E-mail" required>
        <i class="at icon"></i>
    </div>
    <div ng-messages="vm.signUpForm.email.$error" ng-show="vm.signUpForm.$submitted">
        <div ng-messages-include="shared/validation/formErrorMessages.html">   </div>
    </div>
</div>

我当前的指令:

var app = angular.module('app.directives', []);

app.directive('formError', function() {
    return {
        restrict: 'AE',
        replace: 'false',
        scope: {
            statement: '@',
            error: '@'
        },
        template: '<div ng-messages="error" ng-show="true"><div ng-messages-include="shared/validation/formErrorMessages.html"></div></div>'
    };
});

以及我如何尝试运行它:

<div form-error error="{{ vm.signUpForm.email.$error }}" statement="{{ vm.signUpForm.$submitted }}"></div>

它不起作用 - 消息不会出现 - 没有任何错误。在消息显示上,我还想将类“error”添加到“div.field”,但这应该很容易。

知道如何使该指令发挥作用,或者如何以另一种更舒适的方式处理这个问题?

最佳答案

您犯了一个错误,您应该将属性传递给指令

scope: {
      statement: '=',
      error: '='
    },

@ biding 用于传递字符串值,而不是对象,而 error 是一个对象,因此以这种方式传递它不会按预期工作。当然,您可以使用 attr.$observe 和 JSON.parse,但这不是您想要在这里做的。

https://plnkr.co/edit/iRRPqLpmqdQltNjw35Nb?p=preview

关于javascript - 来自 ngMessages 的 AngularJS make 指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37552781/

相关文章:

javascript - 如何删除字符串的第一个和最后一个字符

javascript - 如何使用html切换不同图像上的两个表单击第一行

javascript - 获取传单层控制复选框的状态

python - BS4 中出现奇怪的错误。 find_all() 返回 None

javascript - 仅获取模型对象上的过滤数据作为结果,angularjs

javascript - Bootstrap 和输入组 : how to make input wider wnen input-group-addon is hidden?

javascript - 将嵌套对象转换为数组

javascript - 是否可以从 Javascript 动画创建视频?

javascript - 合并两个 HTML 文件

javascript - 将 js 对象的下标渲染为 HTML