Validation AngularJS-创建与ng要求相反的指令

Validation AngularJS-创建与ng要求相反的指令,validation,angularjs,angularjs-directive,Validation,Angularjs,Angularjs Directive,我正在尝试创建一个指令,该指令将根据表达式的结果添加属性。我创建了一个名为blank的指令,确保字段为空。我只希望在布尔表达式的结果为真时此指令生效 实际上,我需要一个类似ng required的指令,它根据条件添加required。我找不到任何显示如何在属性右侧计算表达式的代码。我将使用attrs.$observe监视属性的值 module.directive('yourDirective', function() { link: function(scope, element, a

我正在尝试创建一个指令,该指令将根据表达式的结果添加属性。我创建了一个名为blank的指令,确保字段为空。我只希望在布尔表达式的结果为真时此指令生效

实际上,我需要一个类似ng required的指令,它根据条件添加required。我找不到任何显示如何在属性右侧计算表达式的代码。

我将使用attrs.$observe监视属性的值

module.directive('yourDirective', function() {

    link: function(scope, element, attrs) {

        attrs.$observe('yourDirective', function(newVal, oldVal) {
            // Add or change attributes or classes here based on `newVal`
        });
    }

}]
有关更多信息,请参阅。

我将使用attrs.$observe对属性的值进行监视

module.directive('yourDirective', function() {

    link: function(scope, element, attrs) {

        attrs.$observe('yourDirective', function(newVal, oldVal) {
            // Add or change attributes or classes here based on `newVal`
        });
    }

}]

请参阅以获取更多信息。

事实证明,在AngularJS中基于属性创建自定义验证非常容易。AngularJS不关心验证的名称。如果您在正确的时间调用$SetValidity,一切都会正常工作

@凯文·斯通的答案是正确的。在我能够准确地表达我的问题之后,我很快找到了这个博客条目,它总结了如何创建添加新验证的属性:


这是一个有点复杂的例子。简而言之,创建一个指令,将ed限制为属性a,并要求ngModel。然后$watch或$observe元素中的属性。然后,您可以查看当前模型值,并通过调用ngModel.$SetValidity设置有效性。同样,AngularJS也不在乎您在我的案例中为验证命名为空。

事实证明,基于属性在AngularJS中创建自定义验证非常容易。AngularJS不关心验证的名称。如果您在正确的时间调用$SetValidity,一切都会正常工作

@凯文·斯通的答案是正确的。在我能够准确地表达我的问题之后,我很快找到了这个博客条目,它总结了如何创建添加新验证的属性:


这是一个有点复杂的例子。简而言之,创建一个指令,将ed限制为属性a,并要求ngModel。然后$watch或$observe元素中的属性。然后,您可以查看当前模型值,并通过调用ngModel.$SetValidity设置有效性。同样,AngularJS不在乎您在我的案例中为您的验证命名为blank。

没有一些示例代码,很难完全理解。但是可以在作用域上使用$evalexp求值任何表达式。$eval的文档:我建议查看NGRequire的代码库,用您正在尝试的内容重新创建一个演示。@TheSharpieOne您能帮我找到它吗?我下载了源代码,但除了规范和文档之外找不到任何东西。@TravisParks没有一些示例代码,很难完全理解。但是可以在作用域上使用$evalexp求值任何表达式。$eval的文档:我建议查看NGRequire的代码库,用您正在尝试的内容重新创建一个演示。@TheSharpieOne您能帮我找到它吗?我下载了源代码,但除了规范和文档之外找不到任何东西。@TravisParks