2017-07-21 3 views
1

テキストフィールドにユーザー名とパスワードを入力しますが、保存しません。そのデータを保存せずに、私はポップアップモーダルを閉じます。角モールを閉じた後にすべてのHTML入力フィールドをリセットする方法

モーダルの外側をクリックすると閉じます。

ポップアップをもう一度開くと、以前のデータは引き続き表示されます。私はそれらのデータをクリアし、フィールドを空にしたいと思っています。

次のリンクを確認してください。 Plunkr

angular.module('plunker', ['ui.bootstrap']); 
 
var ModalDemoCtrl = function ($scope, $modal, $log) { 
 

 
    $scope.user = { 
 
     user: 'name', 
 
     password: null, 
 
     notes: null 
 
    }; 
 

 
    $scope.open = function() { 
 

 
     $modal.open({ 
 
      templateUrl: 'myModalContent.html', // loads the template 
 
      backdrop: true, // setting backdrop allows us to close the modal window on clicking outside the modal window 
 
      windowClass: 'modal', // windowClass - additional CSS class(es) to be added to a modal window template 
 
      controller: function ($scope, $modalInstance, $log, user) { 
 
       $scope.user = user; 
 
       $scope.submit = function() { 
 
        $log.log('Submiting user info.'); // kinda console logs this statement 
 
        $log.log(user); 
 
        $modalInstance.dismiss('cancel'); // dismiss(reason) - a method that can be used to dismiss a modal, passing a reason 
 
       } 
 
       $scope.cancel = function() { 
 
        $modalInstance.dismiss('cancel'); 
 
       }; 
 
      }, 
 
      resolve: { 
 
       user: function() { 
 
        return $scope.user; 
 
       } 
 
      } 
 
     });//end of modal.open 
 
    }; // end of scope.open function 
 
};
<!doctype html> 
 
<html ng-app="plunker"> 
 
    <head> 
 
    <script src="https://code.angularjs.org/1.2.18/angular.js"></script> 
 
    <script src="http://angular-ui.github.io/bootstrap/ui-bootstrap-tpls-0.6.0.js"></script> 
 
    <script src="example.js"></script> 
 
    <link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/css/bootstrap-combined.min.css" rel="stylesheet"> 
 
    </head> 
 
    <body> 
 

 
<div ng-controller="ModalDemoCtrl"> 
 
    <script type="text/ng-template" id="myModalContent.html"> 
 
     <div class="modal-header"> 
 
      <h3>I'm a modal!</h3> 
 
     </div> 
 
     <form ng-submit="submit()"> 
 
      <div class="modal-body"> 
 
      <label>User name</label> 
 
      <input type="text" ng-model="user.user" /> 
 
      <label>Password</label> 
 
      <input type="password" ng-model="user.password" /> 
 
      <label>Add some notes</label> 
 
      <textarea rows="4" cols="50" ng-model="user.notes"> 
 

 
</textarea> 
 
      </div> 
 
      <div class="modal-footer"> 
 
       <button class="btn btn-warning" ng-click="cancel()">Cancel</button> 
 
       <input type="submit" class="btn primary-btn" value="Submit" /> 
 
      </div> 
 
     </form> 
 
    </script> 
 

 
    <button class="btn" ng-click="open()">Open me!</button> 
 
    <div ng-show="selected">Selection from a modal: {{ selected }}</div> 
 
</div> 
 
    </body> 
 
</html>

+0

私が試したモーダル – Laazo

+0

を開いたときに空の文字列に値を割り当てました。いくつかのドロップダウンがあります。私はそれを空の配列とテキストfileds空の文字列です。しかし、それは動作していません。 –

答えて

2

問題は、あなたが実際にModalDemoCtrlから$scope.userにモーダルで$scope.userを結合している、です。これを解決するには、モーダルコントローラで使用する前に、あなたのuserのコピーを作成する必要があります。

$modal.open({ 
    ... 
    controller: function ($scope, $modalInstance, $log, user) { 
     $scope.user = angular.copy(user); 
     ... 
    } 
}); 

Angular.copy()マニュアルを参照してください。

0

あなたは、UIブートストラップ約束でそれを行うことができます。

$scope.modal.result.then(function(result) { 
    console.log('client: resolved: ' + result); 
    }, function(reason) { 
    console.log('client: rejected: ' + reason); 
}); 

私はあなたのコードを実行していたし、それがうまく働きました。

angular.module('plunker', ['ui.bootstrap']); 
    var ModalDemoCtrl = function ($scope, $modal, $log) { 

    $scope.user = { 
     user: 'name', 
     password: null, 
     notes: null 
    }; 

    $scope.open = function() { 

     var $theModal = $modal.open({ 
      templateUrl: 'myModalContent.html', // loads the template 
      backdrop: true, // setting backdrop allows us to close the modal window on clicking outside the modal window 
      windowClass: 'modal', // windowClass - additional CSS class(es) to be added to a modal window template 
      controller: function ($scope, $modalInstance, $log, user) { 
       $scope.user = user; 
       $scope.submit = function() { 
        $log.log('Submiting user info.'); // kinda console logs this statement 
        $log.log(user); 
        $modalInstance.dismiss('cancel'); // dismiss(reason) - a method that can be used to dismiss a modal, passing a reason 
       } 
       $scope.cancel = function() { 
        $modalInstance.dismiss('cancel'); 
       }; 
      }, 
      resolve: { 
       user: function() { 
        return $scope.user; 
       } 
      } 
     });//end of modal.open 

     $theModal.result.then(function(result) { 
      console.log('client: resolved: ' + result); 
     }, function(reason) { 
      $scope.user = {} 
      console.log('client: reject: ' + reason); 
     }) 
    }; // end of scope.open function 
}; 
関連する問題