Отключение кнопки на главной странице с помощью AngularJS - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть следующая мастер-страница:

<body ng-app="app" ng-controller="controller" ng-cloak>
<div class="header" ng-bind="header"></div>
<div class="content">
    <!-- This content will switch -->
    <ui-view></ui-view>
</div>
<div class="footer" ng-show="showFooter">
    <md-button class="md-raised md-primary" ng-click="cancel()">Cancel</md-button>
    <md-button class="md-raised md-primary" ng-click="ok()">OK</md-button>
</div>

и следующая страница «Добавить контакт», которая входит в теги <ui-view>:

    <form name="form">
    <button class="round-button"></button><br />
    <md-input-container>
        <input name="name" ng-model="name" placeholder="Name" minlength="3">
        <div ng-messages="form.name.$error" ng-show="form.name.$dirty">
            <div ng-message="required">This is required.</div>
            <div ng-message="minlength">Name has to be at least 3 characters long.</div>
        </div>
    </md-input-container>
    <br />
    <md-input-container>
        <label>Phone</label>
        <input name="phone" ng-model="phone" placeholder="Phone" ng-pattern="/^[0]{1}[5]{1}[0-9]{1}[0-9]{7}$/">
        <div ng-messages="form.phone.$error" ng-show="form.phone.$dirty">
            <div ng-message="required">This is required.</div>
            <div ng-message="pattern">Please enter a valid phone number.</div>
        </div>
    </md-input-container>
    <br />
    <md-input-container>
        <label>Mail</label>
        <input name="mail" ng-model="mail" placeholder="Mail" ng-pattern="/^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/">
        <div ng-messages="form.mail.$error" ng-show="form.mail.$dirty">
            <div ng-message="pattern">Please enter a valid mail.</div>
        </div>
    </md-input-container>
    <br />
</form>

Мой контроллерСтраница добавления контакта выглядит следующим образом:

controller: function ($scope, $state, $rootScope,$http) {
                  $rootScope.cancel = function () {
                      $state.go("contacts");
                  };
                  $rootScope.ok = function () {

                      var contactInfo = {
                          name: $scope.name,
                          phone: $scope.phone,
                          mail: $scope.mail,
                          address: $scope.address
                      };
                      $http.post("/api/Contact", contactInfo)
                          .then(function (res) {
                              alert("contact added successfully");
                          });

                      $state.go("contacts");
                  };
                  $rootScope.header = "Add Contact";
                  $rootScope.showFooter = true;

Прежде чем я вызову веб-службу, используя $http, я бы хотел, чтобы кнопка OK на главной странице была отключена до тех пор, пока все поля формы не будут заполнены.правильно.

Есть ли способ достичь этой цели?

1 Ответ

0 голосов
/ 22 февраля 2019

Вы должны быть в состоянии сделать это, поместив директиву ng-disabled на кнопку и убедившись, что форма действительна.

<md-button class="md-raised md-primary" ng-disabled="!form.$valid" ng-click="ok()">OK</md-button>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...