【问题标题】:re enabling ng-disabled button in Angular JS在 Angular JS 中重新启用 ng-disabled 按钮
【发布时间】:2015-03-09 06:21:00
【问题描述】:

我是 AngularJS 的新手。我创建了一个带有字段的表单,默认情况下使用 ng-disabled 禁用该字段。当我点击编辑 <button> 时,我希望重新启用这些字段。

HTML

  <form class="form-horizontal" role="form" ng-submit="edit_setting()" ng-controller="ExchangeController">
    <div class="form-group">
      <label>Name</label>
      <div class="col-sm-6">
        <input type="text" class="form-control" ng-model="exchange_dt.name" ng-disabled="true">
      </div>
    </div>
    <div class="form-group">
      <label>Host Name</label>
      <div class="col-sm-6">
        <input type="text" class="form-control" ng-model="exchange_dt.host_name" required ng-disabled="true">
      </div>
    </div>
    <div class="form-group">
      <label>Address</label>
      <div class="col-sm-6">
        <input type="text" class="form-control" ng-model="exchange_dt.address" ng-disabled="true">
      </div>
    </div>
  </form>

控制器

  function ExchangeController($scope, $http, $cookieStore, $location) {
    var edit_exchange_setting = "https://pvbp.com/api/settings.html?contactid=292351&exchange_id=7124&clearinghouseid=1&token=e5349652507c0esae86d50fdbdc53222cf97&page=view";
      $http.get(edit_exchange_setting).success(function(response){
        $scope.exchange_dt.exchange_name = response.name;
        $scope.exchange_dt.exchange_host_name = response.host_name;
        $scope.exchange_dt.exchange_last_processed_date = response.address;   
      });

      $scope.edit_exchange_setting_click = (function(){
      // how can i make the fields re enable here

      });
  }

【问题讨论】:

    标签: javascript jquery html angularjs


    【解决方案1】:

    在控制器中创建范围变量,

    $scope.disabled= true;
    

    并将所有 ng-disabled 替换为该变量,例如,

    ...ng-model="exchange_dt.name" ng-disabled="disabled"....
    

    当您点击编辑按钮时,将$scope.disabled 设置为false 之类的,

    $scope.edit_exchange_setting_click = (function(){      
        $scope.disabled = false;
    });
    

    【讨论】:

      【解决方案2】:

      您可以有一个范围变量来保存truefalse 的值。以及该变量的设置器。

        function ExchangeController($scope, $http, $cookieStore, $location) {
      var edit_exchange_setting = "https://pvbp.com/api/settings.html?contactid=292351&exchange_id=7124&clearinghouseid=1&token=e5349652507c0esae86d50fdbdc53222cf97&page=view";
        $http.get(edit_exchange_setting).success(function(response){
          $scope.exchange_dt.exchange_name = response.name;
          $scope.exchange_dt.exchange_host_name = response.host_name;
          $scope.exchange_dt.exchange_last_processed_date = response.address;   
        });
      
        $scope.edit_exchange_setting_click = (function(){
        // how can i make the fields re enable here
      
        });
      
        $scope.dtName=true;
         $scope.isdtNameDisabled=function()
          {
            return $scope.dtName;
          };
        $scope.updatedtName=function(flag)
        {
        $scope.dtName=flag;
      };
      

      }

      您可以在 HTML 中绑定该 getter 函数。

       <div class="form-group">
        <label>Name</label>
        <div class="col-sm-6">
          <input type="text" class="form-control" ng-model="exchange_dt.name" ng-disabled="isdtNameDisabled()>
        </div>
      </div>
      

      【讨论】:

        【解决方案3】:

        你需要在控制器的顶部创建一个变量说

        $scope.mydisabled=true; 
        

        然后用变量设置你的 ng-disable

        ng-disabled="mydisabled"

        点击编辑按钮将其值设置为 false

        $scope.mydisabled=false;
        

        更新 Fiddle

        【讨论】:

          【解决方案4】:

          一种不同(但相似)的方法是将表单内容包装在一个字段集中,并仅在该字段集中而不是在所有输入字段中禁用 ng。让html更干净。

          <form class="form-horizontal" role="form" ng-submit="edit_setting()" ng-controller="ExchangeController">
            <fieldset ng-disabled ="isFormSetForSaving">
              <div class="form-group">
                <label>Name</label>
                <div class="col-sm-6">
                  <input type="text" class="form-control" ng-model="exchange_dt.name">
                </div>
              </div>
              <div class="form-group">
                <label>Host Name</label>
                <div class="col-sm-6">
                  <input type="text" class="form-control" ng-model="exchange_dt.host_name" required>
                </div>
              </div>
              <div class="form-group">
                <label>Address</label>
                <div class="col-sm-6">
                  <input type="text" class="form-control" ng-model="exchange_dt.address">
                </div>
              </div>
             </fieldset>
            </form>
          

          现在在控制器中根据您的逻辑将 isFormSetForSaving 设置为 true/false。

          function ExchangeController($scope, $http, $cookieStore, $location) {
              $scope.isFormSetForSaving = true;
              var edit_exchange_setting = "https://pvbp.com/api/settings.html?contactid=292351&exchange_id=7124&clearinghouseid=1&token=e5349652507c0esae86d50fdbdc53222cf97&page=view";
                $http.get(edit_exchange_setting).success(function(response){
                  $scope.exchange_dt.exchange_name = response.name;
                  $scope.exchange_dt.exchange_host_name = response.host_name;
                  $scope.exchange_dt.exchange_last_processed_date = response.address;   
                });
          
                $scope.edit_exchange_setting_click = (function(){
                // how can i make the fields re enable here
                    $scope.isFormSetForSaving = false;
                });
            }
          

          【讨论】:

            猜你喜欢
            • 2013-05-07
            • 1970-01-01
            • 2016-04-14
            • 1970-01-01
            • 1970-01-01
            • 2013-08-18
            • 2018-07-30
            • 1970-01-01
            • 2018-07-10
            相关资源
            最近更新 更多