2014-04-12 15 views
24

Sto provando solo per visualizzare un div quando l'utente preme un tasto, sembra essere facile, ma dopo aver speso un sacco di tempo sto diventando veramente pazzo con questo . Il mio codice èAngularjs -> ng-clic e ng-spettacolo per mostrare un div

mio violino: http://jsfiddle.net/jmhostalet/4WK7R/1/

<div ng-app> 
    <div ng-controller="MyCtrl"> 
     <div><button id="mybutton" ng-click="showAlert()">Click me</button></div> 
     <div>Value: {{myvalue}}</div> 
     <div><div ng-show="myvalue" class="hideByDefault">Here I am</div></div> 
    </div> 
</div> 

e il mio controller

function MyCtrl($scope) { 

    $scope.myvalue = false; 

    $scope.showAlert = function(){ 
    $scope.myvalue = true; 
    }; 
} 

Grazie!

risposta

10

Basta sbarazzarsi dei display: none; dal CSS. AngularJS ha il controllo di mostrare/nascondere quel div.

Se si desidera nascondere per impostazione predefinita, è sufficiente impostare il valore di scope.myvalue su false inizialmente - che si sta già facendo.

0

Basta togliere css dal js violino, ng-show hanno controll esso. AngularJS imposta lo stile di visualizzazione su none (utilizzando un flag! Importante). E rimuovi questa classe quando deve essere mostrata.

0

classe rimuovere hideByDefault. Div rimarrà nascosto fino a che il valore di myvalue non sia falso.

1

Se vuoi assicurarti che il tuo div non sia visibile di default usa invece la classe ng-cloak. Si lavorerà correttamente con ngShow direttiva:

<div><div ng-show="myvalue" class="ng-cloak">Here I am</div></div> 

Demo: http://jsfiddle.net/4WK7R/4/

1

Basta togliere css dal js violino, utilizzare il myvaue === vero.

<div ng-show="myvalue == true" class="ng-cloak">Here I am</div> 
4

questo risolverà il problema. Non è necessario scrivere codice nel controller. E rimuovere gli stili CSS display:none

<div><button id="mybutton" ng-click="myvalue=true">Click me</button></div> 
1

Penso che si può creare un'espressione per mostrare o nascondere

<div ng-app> 
    <div ng-controller="MyCtrl"> 
     <div><button id="mybutton" ng-click="myvalue = myvalue == true ? false : true;">Click me</button></div> 
     <div>Value: {{myvalue}}</div> 
     <div><div ng-show="myvalue" class="hideByDefault">Here I am</div></div> 
    </div> 
</div> 
10
<html> 
<head> 
    <title></title> 
</head> 
<body> 
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.9/angular.min.js"></script> 
    <script type="text/javascript"> 
     var app = angular.module('MyApp', []) 
     app.controller('MyController', function ($scope) { 
      //This will hide the DIV by default. 
      $scope.IsVisible = false; 
      $scope.ShowHide = function() { 
       //If DIV is visible it will be hidden and vice versa. 
       $scope.IsVisible = $scope.IsVisible ? false : true; 
      } 
     }); 
    </script> 
    <div ng-app="MyApp" ng-controller="MyController"> 
     <input type="button" value="Show Hide DIV" ng-click="ShowHide()" /> 
     <br /> 
     <br /> 
     <div ng-show = "IsVisible">My DIV</div> 
    </div> 
</body> 
</html> 

ESEMPIO: - http://jsfiddle.net/mafais/4WK7R/380/

0

molto semplice, basta fare questo:

<button ng-click="hideShow=(hideShow ? false : true)">Toggle</button> 

<div ng-if="hideShow">hide and show content ...</div> 
0

ho implementato qualcosa in questo modo la funzione

Controller:

app.controller("aboutController", function(){ 
this.selected = true; 
this.toggle = function(){ 
    this.selected = this.selected?false:true; 
} 
}); 

HTML:

<div ng-controller="aboutController as about"> 
<div ng-click="about.toggle()">Click Me to toggle the Fruits Name</div> 
<div ng-show ="about.selected">Apple is a delicious fruit</div> 
</div> 
Problemi correlati