【问题标题】:How to dynamically assign valdr rules?如何动态分配 valdr 规则?
【发布时间】:2015-01-30 03:51:49
【问题描述】:

请原谅我对 AngularJS 和 valdr 的了解不足...

我有一个使用 AngularJS 的应用程序,其中动态生成 ui 以编辑某些对象,并提供元数据以确定解释对象成员的类型。我将添加额外的元数据来为每个成员设置验证规则。

我找到了 valdr,我想知道是否可以使用 valdrProvider.addConstraints() 为每个可编辑字段重复调用来添加规则。大概规则名称必须是唯一的?

卸载数据时如何从规则集中删除规则?

这种方法有效还是我应该直接使用 AngularJS 指令或其他东西映射规则元数据?

【问题讨论】:

    标签: angularjs valdr


    【解决方案1】:

    你的方法听起来不错。 valdr 提供了一个removeConstraint(constraintName) 函数,可以满足您的需要。但是请注意,这会删除给定模型类型的所有约束。

    https://github.com/netceteragroup/valdr#getting-started 为例。

    yourApp.config(function(valdrProvider) {
      valdrProvider.addConstraints({
        'Person': {
          'lastName': {
            'size': {
              'min': 2,
              'max': 10,
              'message': 'Last name must be between 2 and 10 characters.'
            },
            'required': {
              'message': 'Last name is required.'
            }
          },
          'firstName': {
            'size': {
              'min': 2,
              'max': 20,
              'message': 'First name must be between 2 and 20 characters.'
            }
          }
        }
    });
    

    调用removeConstraint('Person') 将删除Person所有 约束。如果您只是想删除firstName,因为您删除了名字输入字段,您可以再次调用addConstraints,并为Person 更新约束定义。

    最后的笔记:

    • 如果字段被删除,valdr 不会强制您删除约束(请参阅https://github.com/netceteragroup/valdr/issues/46 的讨论)
    • 是的,约束名称是唯一的,因为它们绑定到应该具有唯一名称的模型类型,不应该有两个具有不同实现的 Person 类型

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-02
      • 1970-01-01
      • 2019-08-14
      • 1970-01-01
      • 2013-03-04
      • 1970-01-01
      • 2013-12-07
      相关资源
      最近更新 更多