【发布时间】:2015-06-07 13:42:29
【问题描述】:
我想用 Angular 来实现可重复使用的表单 sn-ps,比如
angular.module('xx').directive('snippetA', function () {
return {
scope: {
form: '='
},
link: function (scope) {
scope.form.validator.customValidator = function (value) {
// return true or false;
};
},
template: '<input ng-model="form.data.userName" custom-validator="form.validator.customValidator(form.data.userName)" name="userName">' +
'<input ng-model="form.data.userId" name="userId" required>'
}
});
我使用隔离作用域来防止作用域污染。可能有一些 customValidator 函数。
这只是一个例子,现实世界的项目比这复杂得多。
某些属性不能仅由带有某些输入的表单显示,因此我将数据属性添加到表单对象。
<form angular-validator name="formName" angular-validator-submit="form.submit()" class="form form-horizontal">
<snippet-a form="form"></snippet-a>
// more inputs or snippets
<button type="submit">submit</button>
</form>
$scope.form = {
validator: {},
data: {},
submit: function () {
// submit this.data
}
}
目前我使用angular-validation 进行表单验证。 它工作正常。但它的范围是“角度验证器”存在的范围。所以我必须用一个不可更改的名称来命名它,例如'form'!
结构是
$scope.form = {
validator: {},
data: {},
submit: function ...
}
当我的页面只包含一个表单时,它可以正常工作。但是当我的页面包含多个表单时,它们的名称会发生冲突。
验证表单 sn-ps 的最佳做法是什么?
【问题讨论】:
-
我认为它可以服务?:stackoverflow.com/a/30201897/1074519
-
抱歉不是,我的片段不是单一输入,所以我编辑问题以使其更清晰
标签: angularjs forms validation