2015-06-07 2 views
1

Я хочу использовать угловой для реализации resuable формы фрагменты, какугловая форма фрагмент как проверить

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 ... 
} 

когда моя страница содержит только одну форму, он прекрасно работает. Но когда моя страница содержит более одной формы, имя их будет конфликтовать.

Какова наилучшая практика проверки фрагментов формы?

+0

Я думаю, что это может служить ?: http://stackoverflow.com/a/30201897/1074519 –

+0

жаль, что это не так, мой snippt - это не один вход, поэтому я редактирую вопрос, чтобы сделать его более понятным – user3291637

ответ

0

Старайтесь добавить форму: name="FormScope". Угловые автоматически создает переменные для обработки формы и валидации

<form name="FormScope" class="form form-horizontal"> 
console.log($scope.FormScope); 

Demo: См этого ответа: https://stackoverflow.com/a/15090867/1074519

+0

извините, мой вопрос не так прост – user3291637

+0

Спасибо, я думаю о том, чтобы сделать мой вопрос более ясным. – user3291637

+0

Я редактировал демо, вы можете добавить собственные валидаторы –

Смежные вопросы