动态生成表单的密码验证

时间:2014-05-27 17:26:12

标签: forms angularjs validation

所以我只是学习Angular并且我有基本的路由设置和部分用于设置带有表单的基本页面(理论上任何形式),并且基于控制器我加载它从字段加载表单控制器中的数组。

其中一个表格是注册表格,我想验证密码是否匹配。

所以在我所拥有的部分(模式复杂版本)中

<input ng-repeat="field in fields" ng-model="field.model" mustEqual="fields.mustEqual">

我找到了一个进行密码比较的指令:

taskDivApp.directive('mustEqual', function() {
  return {
    restrict: 'A', // only activate on element attribute
    require: '?ngModel', // get a hold of NgModelController
    link: function(scope, elem, attrs, ngModel) 
    {
      if(!ngModel) return; // do nothing if no ng-model

      // watch own value and re-validate on change
      scope.$watch(attrs.ngModel, function() 
      {
        validate();
      });

      // observe the other value and re-validate on change
      attrs.$observe('equals', function (val) 
      {
        validate();
      });

      var validate = function() 
      {
        // values
        var val1 = ngModel.$viewValue;
        var val2 = attrs.mustEqual;

        // set validity
        ngModel.$setValidity('equals', val1 === val2);
      };
    }
  }
});

所以基本上我想做的就是能够从控制器将文字字符串加载到ng-model中,这样我就可以将模型配对并且必须相等,所以表单的数据看起来像: p>

$scope.fields = [
{
    'type':"Email",
    'placeholder':"Email Address",
    'req': true,
    'focus':true
},
{
    'type':"Password",
    'placeholder':"Password",
    'model': "password",
    'mustEqual': "passwordConf"
},
{
    'type':"Password",
    'placeholder':"Comfirm Password",
    'model':"passwordConf",
    'mustEqual': "password"
}
];

然而现在发生的事情是主密码字段被绑定到&#34;模型&#34;数组中索引的字段,类似于passwordConf(即初始值&#34;密码&#34;和&#34; passwordConf&#34;)

事实上这并不容易让我觉得我有错误的心态 - 这不是一种表格形式的好方法,我应该把它们硬编码吗? 如果这没关系,那么任何关于如何实现它的想法都将不胜感激!

0 个答案:

没有答案