Почему ng-disabled здесь не работает с $ pristine?

0

Ниже HTML не работает должным образом. Даже когда я ввожу в поле ввода, кнопка остается отключенной:

<form name="form">
  <td>
    <input type="text" ng-if="user.saveAllowed" ng-model="user.limit">
    <p ng-if="!user.saveAllowed">{{user.limit}}</p>
  </td>
  <td ng-if="user.saveAllowed">
    <button class="btn btn-limit btn-success" ng-click='user.setLimit(user.limit)' ng-disabled="form.$pristine">Save</button>
  </td>
</form>
  • 0
    Это может быть потому, что кнопка сохранения находится в блоке ng-if, который полностью удаляет элементы DOM внутри и теряет привязки. Попробуйте заменить ng-if на ng-show.
Теги:

1 ответ

0

Когда я попробовал, он работал так, как ожидалось, не могли бы вы проверить?

angular.module("myApp", []).controller("myCtrl", function($scope) {
  $scope.user = {saveAllowed: true};
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<html ng-app="myApp">
<form name="form" ng-controller="myCtrl">
  <td>
    <input type="text" ng-if="user.saveAllowed" ng-model="user.limit">
    <p ng-if="!user.saveAllowed">{{user.limit}}</p>
  </td>
  <td ng-if="user.saveAllowed">
    <button class="btn btn-limit btn-success" ng-click='user.setLimit(user.limit)' ng-disabled="form.$pristine">Save</button>
  </td>
</form>

</html>
  • 0
    Хм, да, это сработало для меня. Может ли это быть связано с тем, что я использую синтаксис controllerAs а не $scope ?
  • 0
    Хм, не думаю, но не могли бы вы попробовать это?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню