2016-08-15 5 views
1

Я пытаюсь использовать angular-wysiwyg и проверить форму. Вместо того, чтобы использовать стандартный form.textArea.$dirty я обновляю флаг на объеме:угловая-wysiwyg проверка формы

$scope.onTextChange = function (value) { 
 
    $scope.textContent = value; 
 
    $scope.isContentDirty = true; 
 
    ... 
 
}

Тогда я могу использовать свойство на моей кнопке:

<button ng-diabled="isContentDirty"></button>

Но я бы предпочел сделать что-то вроде этого:

<wysiwyg name="myTextArea" ng-model="textContent"></wysiwyg> 
 

 
<button ng-disabled="!form.myTextArea.$dirty></button>

Как я мог бы сделать эту работу?

Вот открытый вопрос вроде связанных с:
https://github.com/TerryMooreII/angular-wysiwyg/issues/43

Вот документы для этой директивы: https://github.com/TerryMooreII/angular-wysiwyg#usage

ответ

0

я нашел решение, которое заставило меня достаточно счастливым. Получается, что вы можете проверить действительность любого элемента формы путем ссылки, то есть:

myForm.editor.$error

, который будет ссылаться на ошибки на «Редактор» элемент формы здесь:

<form name="myForm"> 
    <wysiwyg name="editor"></wysiwyg> 
</form> 

Когда вы идете на шаг компоновки в директиве, вы можете установить $ парсеров, которые по существу позволяют аннулирование формы, если соблюдены некоторые условия:

angular.module('foo').directive('wysiwyg', function() { 
    return { 
     restrict: 'E', 
     require: 'ngModel', //the 'value' of the form item 
     template: 'my template', 
     link: function(scope, elem, attrs, ngModel) { 

      function checkCustomError(viewValue) { 
       valid = viewValue.someCondition === 'someValue'; 
       ngModel.$setValidity('customError', valid); 
       return viewValue; 
      } 

      ngModel.$parsers.unshift(checkCustomError); 
     } 
    } 
} 

d ошибка будет отображаться в formName.directiveName.$error.customError

Есть другие способы, чтобы признать недействительными ngModel, а также, например, поставив ng-maxlength на директиву, но я думал, что это был самый информативный способ объяснения.