2016-07-30 9 views
1

Ich bin neu auf AngularJs und ich möchte Header sehen, wenn nur Kontrollkästchen Wert ist wahr. Ich setze seinen Anfangswert falsch, aber Kopfzeile wird im ersten Lauf angezeigt. Meine Frage ist, warum der Header zum ersten Mal ohne Klick angezeigt wird?AngularJs ng-show Verwendung

var app = angular.module("myApp", []); 
 
app.controller("myController", function($scope) { 
 
    $scope.myVar = "false"; 
 
});
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
 

 
<div ng-app="myApp" ng-controller="myController"> 
 
    <form> 
 
    <input type="checkbox" ng-model="myVar">if u want to see header click this checkbox</input> 
 
    <h1 ng-show="myVar">show this if checkbox returned true</h1> 
 
    </br> 
 
    {{myVar}} 
 
    </form> 
 
</div>

+0

$ scope.myVar = false sollte funktionieren – Naveen

Antwort

0

Sie einen String in myVar zuweisen, so Nötigung es boolean, kommt immer true. Weisen Sie es einem echten booleschen Wert zu: $scope.myVar = false

+0

Es hat so funktioniert, danke. – Pronto

0

Wegen Ihnen zugewiesenen Wert ist eine Zeichenkette. Gib einfach nur einen booleschen Wert, der gut funktioniert.

<html> 
 
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
 
<body> 
 
    <div ng-app="myApp" ng-controller="myController"> 
 
     <form> 
 
      <input type="checkbox" ng-model="myVar">if u want to see header click this checkbox</input> 
 
      <h1 ng-show="myVar">show this if checkbox returned true</h1></br> 
 
      {{myVar}} 
 
     </form> 
 
    </div> 
 
<script> 
 
    var app=angular.module("myApp",[]); 
 
    app.controller("myController",function($scope){ 
 
     $scope.myVar=false; 
 
    }); 
 
</script> 
 
</body> 
 
</html>

0

entfernen Anführungszeichen von $ scope.myVar = "false"; Hier weisen Sie $ scope.myVar einen Zeichenfolgenwert zu. Wenn Sie Ihre Seite zum ersten Mal laden, funktioniert das nicht, da der gewünschte boolesche Wert nicht abgerufen wird.