2017-04-22 2 views
1

私は現在、モーダルフォームの設定をしていて、どうしたらいいかうまく動作しますが、ユーザーがテキストボックスや選択肢に入力した情報を取得する必要があります。私は始める必要があります。以下は、私のモーダルフォームのコードです。私は直接的な答えを必ずしも探しているわけではなく、より多くの情報が正しい方向に向いていると思う。モーダルフォーム(角度)からユーザー入力を引き出す

<div ng-app='plunker' ng-controller="ModalDemoCtrl"> 
    <script type="text/ng-template" id="myModalContent.html"> 
    <div class="modal-header"> 
     <h3>Create a new post</h3> 
    </div> 
    <form name="modalForm"> 
    <div class="modal-body"> 
     <div class="form-group" ng-class="{ 'has-error': modalForm.modalInput.$invalid }" > 
     <input name="modalInput" type="text" class="form-control" size="10" ng-model="data.myNumber" placeholder="Post Title" required/><br> 
     <textarea name="modalInput" class="form-control" rows="10" maxlength="1000" form="modalForm" ng-model="data.myNumber2" placeholder="Post Body" required></textarea><br> 
     <label for="sel1">Select category:</label> 
      <select name="modalInput" class="form-control" ng-model="data.myNumber3" id="sel1" required> 
       <option value="" selected disabled>Please select</option> 
       <option value='lifestyle'>lifestyle</option> 
       <option value='travel'>travel</option> 
       <option value='video'>video</option> 
      </select><br> 
     <input name="modalInput" type="url" class="form-control" size="10" ng-model="data.myNumber4" placeholder="http://www.postUrlHere.com"/> 
     </div> 
    </div> 
    <div class="modal-footer"> 
     <button class="btn btn-primary" ng-disabled="modalForm.$invalid" ng-class="{ 'disabled': modalForm.$invalid }" ng-click="ok()">Submit</button> 
     <button class="btn btn-primary" ng-click="cancel()">Cancel</button> 
    </div> 
    </form> 
    </script> 
    <h1>GWAT Websites and Designs</h1> 
    <button class="btn" ng-click="open()">Submit new post</button> 
</div> 
<script> 
var myMod = angular.module('plunker', ['ui.bootstrap']); 
var ModalDemoCtrl = function($scope, $uibModal, $log) { 
    $scope.items = ['title', 'body', 'category', 'url']; 

    $scope.open = function() { 
    var modalInstance = $uibModal.open({ 
     templateUrl: 'myModalContent.html', 
     controller: ModalInstanceCtrl, 
     resolve: { 
     items: function() { 
      return $scope.items; 
     } 
     } 
    }); 

    modalInstance.result.then(function(selectedItem) { 
     $scope.selected = selectedItem; 
    }, function() { 
     $log.info('Modal dismissed at: ' + new Date()); 
    }); 
    }; 
}; 

編集:

var ModalInstanceCtrl = function($scope, $uibModalInstance, data) { 
    $scope.items = items; 
    $scope.selected = { 
    item: $scope.items[0] 
    }; 

    $scope.ok = function() { 
    $uibModalInstance.close($scope.selected.item); 
    }; 

    $scope.cancel = function() { 
    $uibModalInstance.dismiss('cancel'); 
    }; 
}; 

myMod.controller('ModalDemoCtrl', ModalDemoCtrl); 
myMod.controller('ModalInstanceCtrl', ModalInstanceCtrl); 
</script> 
+0

入力、テキストエリア、および選択値をモーダルインスタンスに入力しますか? – codemax

+0

さて、$ scope.items = items;を変更してください。 〜$ scope.data = data; $ scope.selectedオブジェクトを削除します。また、$ scope.selected.itemを$ uibModalInstanceから削除します。彼らはもう存在しないので、モーダルを開くことができませんでした。 – codemax

答えて

1

あなたはmodalInstanceに現在のページからの$ scope.dataを送信するために探しているなら、あなたは解決オブジェクトにプロパティを追加する必要があります。 ModalInstanceCtrlから

$scope.open = function() { 
    var modalInstance = $uibModal.open({ 
    templateUrl: 'myModalContent.html', 
    controller: ModalInstanceCtrl, 
    resolve: { 
     data: function() { 
     return $scope.data; 
     } 
    } 
}); 

、依存関係として「データ」を追加し、あなたは、関連するデータを取得することができるようになります。

+0

はい私は以前のコメントで言及したそれらの値を得ることを探しています。上記のように解決策を変更し、依存関係としてデータを追加すると、ボタンをクリックするとモーダルフォームが開きません。私はそれ以上の項目の配列を必要としない例から来たが、私は傾けることなくそれを使用して廃棄するように見える –

+0

私は参照してください。 ModalInstanceCtrlコードで質問を更新できますか? – codemax

+0

$ scope.dataをモーダルからメインウィンドウに、またはメインウィンドウからモーダルに渡していますか? – codemax

関連する問題