2017-04-12 7 views
0

저는 Angularjs를 처음 사용하고 일부 작업을 수행하여 연습합니다. 여기에 내 웹 페이지의 컨트롤러 및 개체 값에 개체를 만듭니다. 하지만 여기서 ng-show는 아래 표현을 평가하지 않습니다. 하지만 컨트롤러에 변수를 만들면 $ scope.ngshow = false; 작동합니다. 아래 코드가 효과가없는 이유를 도와주세요.ng-show는 표현식을 평가하지 않습니다.

<!DOCTYPE html> 
<html> 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
<body> 

<div ng-app="myApp" ng-controller="myCtrl"> 
<ul> 

<li ng-show = "a.name"> Name {{a.name}} </li> 
<li ng-show = "a.id"> Id {{a.id}}</li> 
<li ng-show = "a.address"> Address {{a.address}}</li> 
</ul> 
</div> 

<script> 
var app = angular.module('myApp', []); 
app.controller('myCtrl', function($scope) { 
    $scope.a = { 
    'name' : 'false', 
    'id' : 'true', 
    'address' : 'false' 
    }; 
}); 
</script> 

<p>ng-show didnt accept expressions.</p> 

</body> 
</html> 

감사합니다.

+0

문자열로 true 또는 false를 사용하지 마십시오. 따옴표를 제거하십시오. – Phantom

답변

1

당신은

var app = angular.module('myApp', []); 
 
app.controller('myCtrl', function($scope) { 
 
    $scope.a = { 
 
    'name' : false, 
 
    'id' : true, 
 
    'address' : false 
 
    }; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
 

 
<div ng-app="myApp" ng-controller="myCtrl"> 
 
<ul> 
 

 
<li ng-show = "a.name"> Name {{a.name}} </li> 
 
<li ng-show = "a.id"> Id {{a.id}}</li> 
 
<li ng-show = "a.address"> Address {{a.address}}</li> 
 
</ul> 
 
</div> 
 

 
<script> 
 

 
</script> 
 

 
<p>ng-show didnt accept expressions.</p>

+0

고마워요. 친구 :-) – User12345

0

그냥 true하고 truefalse에 따옴표를 넣어 .If false에서 따옴표를 제거 문자열로 true 또는 false을 사용하지 않아야합니다, 그들은 strings.In 있습니다 그 경우 ng-show 변수가 정의되어 있는지 여부를 확인하고 있습니다. 귀하의 경우 문자열에 참/거짓 값이 있으므로 ng-show는 표현식 a를 고려하고 있습니다. 따라서 사실로 정의됩니다.

0

<!DOCTYPE html> 
 
<html> 
 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
 

 
<body> 
 

 
    <div ng-app="myApp" ng-controller="myCtrl"> 
 
    <ul> 
 

 
     <li ng-show="a.name"> Name {{a.name}} </li> 
 
     <li ng-show="a.id"> Id {{a.id}}</li> 
 
     <li ng-show="a.address"> Address {{a.address}}</li> 
 
    </ul> 
 
    </div> 
 

 
    <script> 
 
    var app = angular.module('myApp', []); 
 
    app.controller('myCtrl', function($scope) { 
 
     $scope.a = { 
 
     'name': false, 
 
     'id': true, 
 
     'address': false 
 
     }; 
 
    }); 
 
    </script> 
 

 
    <p>ng-show didnt accept expressions.</p> 
 

 
</body> 
 

 
</html>

잘 apperenly 그것은 버전 충돌입니다. 각도가 ng 인이 버전 1.4.8은 지원 값을 부울로 표시하지 않고 부울로 표시합니다. 그래서 당신은 값

$scope.a = { 
     'name' : false, 
     'id' : true, 
     'address' : false 
     }; 

var app = angular.module('myApp', []); 
 
app.controller('myCtrl', function($scope) { 
 
    $scope.a = { 
 
    'name' : false, 
 
    'id' : true, 
 
    'address' : false 
 
    }; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
 

 
<div ng-app="myApp" ng-controller="myCtrl"> 
 
<ul> 
 

 
<li ng-show = "a.name"> Name {{a.name}} </li> 
 
<li ng-show = "a.id"> Id {{a.id}}</li> 
 
<li ng-show = "a.address"> Address {{a.address}}</li> 
 
</ul> 
 
</div>

그러나 주위에 따옴표를 제거해야합니다 당신은 값이 true 또는 false 경우 부울 문자열 값을 식별 한 후 각 1.2.23처럼 낮은 버전을 사용하는 경우

var app = angular.module('myApp', []); 
 
app.controller('myCtrl', function($scope) { 
 
    $scope.a = { 
 
    'name' : 'false', 
 
    'id' : 'true', 
 
    'address' : 'false' 
 
    }; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="myApp" ng-controller="myCtrl"> 
 
<ul> 
 

 
<li ng-show = "a.name"> Name {{a.name}} </li> 
 
<li ng-show = "a.id"> Id {{a.id}}</li> 
 
<li ng-show = "a.address"> Address {{a.address}}</li> 
 
</ul> 
 
</div>