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