2016-04-17 116 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)) { 

刪除最後)


當你的代碼將工作,你w生病可能會對你的街區產生「眨眼」效果。它將出現在頁面的加載中,然後當Angular將啓動時它將消失。如果您有「眨眼」效果,則需要在該塊上添加ng-cloack

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

好的!真棒,現在我擺脫了這一點,並獲得新的錯誤。哈哈 – user3251349

+0

阿哈酷!你會看到你的瀏覽器控制檯會幫助你很多! :) –

+0

您可以通過點擊左上方的向上箭頭來上傳我的答案 –

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