Добавить новое событие angularJs к кнопке при изменении входного значения с помощью контроллера в angularJs

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

<form name = "addNewCourse">
  <input ng-model = "courseNameEdit" ng-value = "courseName" ng-pattern = "regex" ng-trim = "false" name = "addNewCourseField" ng-minlength = "5" ng-maxlength = "60" required>
  <div ng-messages = "addNewCourse.addNewCourseField.$error" style = "text-align: left !important; color:red;">
    <div ng-message = "required">This field is required*</div>
    <div ng-message = "pattern">Must be only digits or numbers</div>
    <div ng-message = "maxlength">Must not exceed 60 characters</div>
    <div ng-message = "minlength">Must not be smaller than 5 characters</div>
  </div>
  <button class = "btn btn-primary" ng-click = "saveCourseNameFunc(courseNameEdit)">Save</button>
</form>

я хочу добавить ng-disabled = "addNewCourse.$invalid" в кнопку, если значение изменится с помощью контроллера. Заранее спасибо.

Почему вы не можете просто добавить это в шаблон сейчас? Почему это нужно делать с контроллера?

ryanyuyu 01.05.2018 14:46
Знаете ли вы, что директивы являются одной из самых мощных и универсальных функций Angular?
Знаете ли вы, что директивы являются одной из самых мощных и универсальных функций Angular?
Директивы позволяют расширять HTML новыми элементами и атрибутами и даже создавать собственные структурные директивы для манипулирования DOM. С...
Разница между Angular и React
Разница между Angular и React
React и AngularJS - это два самых популярных фреймворка для веб-разработки. Оба фреймворка имеют свои уникальные особенности и преимущества, которые...
0
1
27
2

Ответы 2

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

FORMOBJECT.$setSubmitted();

Вы также можете попробовать запустить событие изменения этого поля через контроллер, например:

angular.element('#INPUT_ID').trigger('change');

Надеюсь, вы получите решение из одного из приведенных выше.

Как насчет того, чтобы использовать ng-change и логическое значение в выражении ng-disabled, просто активируйте инвалидность.

<form name = "addNewCourse">
  <input ng-change = "changed()" ng-disabled = "addNewCourse.$invalid && activeDisable"  ng-model = "courseNameEdit" ng-value = "courseName" ng-pattern = "regex" ng-trim = "false" name = "addNewCourseField" ng-minlength = "5" ng-maxlength = "60" required>
  <div ng-messages = "addNewCourse.addNewCourseField.$error" style = "text-align: left !important; color:red;">
    <div ng-message = "required">This field is required*</div>
    <div ng-message = "pattern">Must be only digits or numbers</div>
    <div ng-message = "maxlength">Must not exceed 60 characters</div>
    <div ng-message = "minlength">Must not be smaller than 5 characters</div>
  </div>
  <button class = "btn btn-primary" ng-click = "saveCourseNameFunc(courseNameEdit)">Save</button>
</form>

и ваш контроллер должен содержать что-то вроде этого:

$scope.activeDisable = false;

$scope.change = function(){
     $scope.activeDisable = true;
}

Другие вопросы по теме