如何在控制器具有ng-disable表达式时启用md-button?

时间:2016-12-08 06:58:48

标签: javascript angularjs angular-material angular-directive

我的表单中有一个md按钮,我使用ng-disable表达式设置它。一切都很好。但现在我想从控制器启用特定条件下的按钮。 我这样设置它。

  

vm.verifyMobileForm。$ invalid = true;

但这对我不起作用。

这是我的元素

<form name="verifyMobileForm" novalidate>
    <md-input-container class="md-block" md-no-float>
        <input type="mobile" id="mobile" ng-value="{{vm.form.mobile}}" 
                name="mobile" ng-model="vm.form.mobile" 
                placeholder="Your Mobile number" 
                ng-pattern="/^[789]\d{9}$/" maxlength="10" required
        />
        <div ng-messages="verifyMobileForm.mobile.$error" role="alert" multiple>
            <div ng-message="required">
                <span >Mobile no. is required</span>
            </div>

        </div>

    </md-input-container>
    <div class="dialog-demo-content" layout="row" layout-wrap layout-margin layout-align="center">
        <md-button type="submit" 
              class="md-raised md-accent submit-button" 
              ng-disabled="verifyMobileForm.$invalid || verifyMobileForm.$pristine" 
              ng-click = "vm.checkMobile($event, document.getElementById('mobile').value)"
        >
            Next
        </md-button>
    </div>
</form>

这是我的控制器,我希望将其设置为真

(function ()
{
    'use strict';

    angular
        .module('app.pages.auth.verify-mobile')
        .controller('VerifyMobileController', VerifyMobileController);

    /** @ngInject */
    function VerifyMobileController($scope,dataservice,msApi, $state,$mdDialog)
    {
        var vm = this;
        vm.form = {};
        var getMob = dataservice.getData();
        if(getMob){
            vm.form.mobile = getMob[1].mobile;
            vm.verifyMobileForm.$invalid = true;
        }
    }
}();

1 个答案:

答案 0 :(得分:1)

你说你想在特定情况下启用按钮吗? 那么为什么不使用这样的东西

ng-disabled =&#34;(verifyMobileForm。$ invalid || verifyMobileForm。$ pristine)&amp;&amp; DISABLEBUTTON&#34;

...

并且在控制器中,即使表单无效

,也可以启用按钮

$ scope.DISABLEBUTTON = false;