2016-04-17 7 views
1

「新規」ボタンのクリックを処理するコントローラを作成しようとしています。目標は、コードの下位ブロック(開始<div ng-show="buttonClick">)を最初に非表示にすることです。 「新規」ボタンをクリックすると、下のコードブロックが表示されます。AngularJS:ボタンをクリックした後にhtmlのブロックを表示します。

私が抱えている問題は、ページをロードするときにコードの下位ブロックが表示されることです。それは隠されることはありません。

{% extends "base.html" %} 


{% block content %} 
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 

    <div class="container-fluid"> 
    <div class="row"> 
     <div class="col-sm-10 col-sm-offset-1"> 
     <h2>Ratings</h2> 
     <table class="table table-bordered"> 
      <thead> 
      <tr> 
      <th>Beer Name</th> 
      <th>Beer Rating</th> 
      <th>Notes</th> 
      <th>Brewer</th> 
      </tr> 
      </thead> 
      <tbody> 
      {% for rating in ratings %} 
      <tr> 
       <td>{{ rating.beer_name }}</td> 
       <td>{{ rating.score }}</td> 
       <td>{{ rating.notes }}</td> 
       <td>{{ rating.brewer }}</td> 
       <td><a href="{% url 'rating-edit' rating.id %}" class="btn btn-primary" value="{{ rating.id }}" name="edit">Edit</a></td> 
       <td><a class="btn btn-primary" href="{% url 'rating-delete' rating.id %}" value="{{ rating.id }}" name="delete" >Delete</a></td> 
      </tr> 
      {% endfor %} 
      </tbody> 
     </table> 
     <div ng-app="myApp" ng-controller="myCtrl"> 
     <a ng-model="buttonClick" ng-click="is_clicked()" class="btn btn-primary">New</a> 
     </div> 
    </div> 
    </div> 






<div ng-show="buttonClick" > 
    <div class="container-fluid"> 
    <div class="row"> 
     <div class="col-sm-10 col-sm-offset-1"> 
     <h2>Enter a new rating</h2> 
     <form role="form" method="post"> 
      {% csrf_token %} 
      <p>Beer Name: {{ form.beer_name }}</p> 
      <p>Score: {{ form.score }}</p> 
      <p>Notes: {{ form.notes }}</p> 
      <p>Brewer: {{ form.brewer }}</p> 
      <p><button type="submit" class="btn btn-primary">Submit</button></p> 
     </form> 
     </div> 
    </div> 
    </div> 
</div> 
</div> 

<script> 
     var app = angular.module('myApp', []); 
     app.controller('myCtrl', function($scope){ 
      $scope.buttonClick = false; 
      $scope.is_clicked = function() { 
      $scope.buttonClick=true; 
      console.log($scope.buttonClick) 
     } 
     }) 
</script> 
{% endblock %} 
+0

何が問題なのですか? –

+0

@GG。下のブロックは、ページをロードするときに表示されます。それは隠されることはありません。 – user3251349

+0

ブラウザのコンソールにエラーはありますか?あなたのコントローラに 'console.log($ scope.buttonClick)'を追加すると、何が記録されますか? –

答えて

1

app.controller('myCtrl', function($scope)) { 

は最後)


あなたのコードを削除しますあなたはうまくいくでしょうあなたのブロックにはおそらく "点滅"効果があります。ページの読み込み時に表示され、Angularが開始すると消えます。 「点滅」効果がある場合は、ブロックにng-cloackを追加する必要があります。

<div ng-show="buttonClick" ng-cloak> 
+0

さようなら!素晴らしいですが、私はそれから解放され、新しい誤りを抱えています。笑 – user3251349

+0

ああクール!あなたのブラウザのコンソールが多くの助けになることがわかります! :) –

+0

左の上向き矢印をクリックして私の答えをupvoteすることができます –

0

私はおそらく(未テスト)このようにそれを試してみた:この行で

<div ng-app="myApp" ng-controller="myCtrl"> 
     <div><a ng-click"buttonClick = !buttonClick" class="btn btn-primary">New</a></div> 
     <script> 
     var app = angular.module('myApp', []); 
     app.controller('myCtrl', function($scope)) { 
     $scope.buttonClick = false; 
     } 
     </script> 
+0

ありがとうございます。私はちょうどそれを試して、それはまだ隠されていません。私はポストに十分な情報を与えてくれることを願っています。 – user3251349

関連する問題