1

私はAngularJSのウェブサイトで作業しています。私は目的に応じて "表示:なし"に設定されたフォームを持っています。AngularJS:ng-clickでのクラスの表示と非表示

私は、作成と言うボタンがあります。私が望むのは、作成ボタンをクリックすると、 "display:none"に設定されたフォームが "display:block"に変わり、作成ボタンが隠れるはずです。

また、フォームを送信した後、フォームを非表示にして、作成ボタンを再度表示する必要があります。

P.S:これで、ng-showまたはng-hideディレクティブを使用できるように、いくつかの方法があることを理解しました。または、ng-clickディレクティブを使用できます。私は、真剣で専門的なWebアプリケーションを開発する際に、この場合の最高のプログラミング慣行が何であるかを知りたい。

シンプルなことであれば、素晴らしいコードを提供してください。

答えて

2

ng-showとともにng-clickを使用します。

<div class="hideShow" ng-show="showToggle"> 
    <form ng-submit="showToggle = false"></form> 

</div> 
<button ng-hide="showToggle" ng-click="showToggle = !showToggle">Click To Show</button> 

これは非表示になり、ボタンをクリックすると表示されます。

+0

私はあなたが何を意味するのか分からない。ボタンをクリックした後で非表示にするには、ボタンにng-hide = "showToggle"を追加します。次に、フォームを送信するときにshowToggleをfalseに戻します。 showToggleは$ scopeに添付された単なる変数です。複数の変数を使用して、さまざまなものを隠したり表示することができます。 –

+0

マイケルに感謝....これは完璧に動作します! "showToggle"の値は "Click to show"ボタンをクリックしたときに変更されるが、showToggleの値はデフォルトで最初はfalseに設定されていることが分かります。 –

+0

これはJSの偽の値であるundefinedに設定されています。この回答はそれについて説明します:http://stackoverflow.com/questions/19839952/all-falsey-values-in-javascript –

6

単にngShowディレクティブでngClickディレクティブを使用する作業例については、以下を参照してください。

var myApp = angular.module('myApp', []); 
 

 
myApp.controller('FormController', ['$scope', 
 
    function($scope) { 
 

 
    // init showForm to false; 
 
    $scope.showForm = false; 
 

 
    // init empty user object for our form 
 
    $scope.user = {}; 
 

 
    $scope.submitForm = function() { 
 
     // logic when the form is submitted 
 
     //... 
 

 
     // reset the user 
 
     $scope.user = {}; 
 

 
     // finally hide the form 
 
     $scope.showForm = false; 
 
    }; 
 

 
    } 
 
]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<div ng-app="myApp"> 
 

 
    <div ng-controller="FormController"> 
 

 
    <button ng-hide="showForm" ng-click="showForm = true">Show form</button> 
 

 
    <form ng-show="showForm" ng-submit="submitForm()"> 
 

 
     <input type="text" name="firstname" ng-model="user.firstname" /> 
 

 
     <input type="submit" value="submit" /> 
 

 
    </form> 
 

 
    </div> 
 

 
</div>

我々はshowFormがtrueの場合は表示するようにフォームを設定しています。

この変数は、button要素のngClickディレクティブを使用して切り替えられ、submitForm関数内のコントローラで明示的にfalseに設定されます。

ngSubmitディレクティブを使用して、submitForm()onsubmitイベントにバインドします。フォームが送信されると、ロジックが実行され、フォームがリセットされ、非表示になります。

+0

@papakia ....コードをありがとう。 もう1つだけ...私は非表示ボタンを表示したくありません。 送信ボタンでフォームを表示するだけです。送信すると、再度表示ボタンが表示されます。 –

+0

完璧!....ありがとうございます:-) –

+0

@SteveJax問題はありません:)これまたは任意の答えがあなたの質問を解決した場合は、チェックマークをクリックしてそれを受け入れることを検討してください。これは、あなたが解決策を見つけ出し、回答者とあなた自身の両方に評判を与えていることを広範なコミュニティに示します。これを行う義務はありません。 – cnorthfield

0

は当初Click To Showボタンを表示し、このボタンをクリックし、次に別のボタンClick To hideボタンをあなたのコンテンツを表示し、表示されるときにも、両方のボタンのためng-showを使用する必要があります。

<div class="hideShow" ng-show="isShow"> 
    <p>here your form or other content <p> 
</div> 
<button ng-click="isShow= !isShow" ng-show="!isShow">Click To Show</button> 
<button ng-click="isShow= !isShow" ng-show="isShow">Click To hide</button> 
関連する問題