この回答で提案されている以下の検証ディレクティブに取り組んでいます。
MyBigAngularApp.directive("bkNgValidation", function ($compile) {
return {
priority: 10000,
terminal: true,
link: function (scope, element, attrs) {
var validationType = attrs.bkNgValidation;
window["addValidationFor_" + validationType](element);
// prevent infinite loop
element.removeAttr("bk-ng-validation");
$compile(element)(scope);
}
};
});
次に、このディレクティブを の形式で html 要素に適用するとbk-ng-validation="phoneNumber"
、ディレクティブは次の関数を呼び出します。
function addValidationFor_phoneNumber(element) {
element.attr("ng-pattern", "/^[0-9]+$/");
element.attr("ng-minlength", 5);
element.attr("ng-maxlength", 8);
alert("yeah baby");
}
これaddValidationFor_phoneNumber
は現在、概念実証のためだけにグローバル名前空間にありますが、明らかにするモジュールを使用して、かなりの数の検証関数になる可能性があるものを整理することを検討しています。または、Angular 内で作業しているため、従うべき他のパターンはありますか? 公開モジュールの定数を宣言してそれをディレクティブに挿入するようなことができると思いますが、間違った道を進む前にこの質問をしたいと思いました。