ng-show没有隐藏AngularJS 1.2中的SPAN元素

时间:2017-04-24 03:29:25

标签: angularjs

我正在从AngularJS这本书开始学习AngularJS。本书使用AngularJS 1.2版。书中的示例代码之一显示了ng-show指令的工作原理。本例中ng-show指令的使用说明如下:

  

ng-show检查变量,并根据其真实性   分别在UI中显示,显示或隐藏元素。在这种情况下,我们   如果note.assignee为真,请显示受让人范围。 AngularJS对待   true,非空字符串,非零数字和非空JS对象   truthy。 所以在这种情况下,如果注释,我们会看到受让人的跨度   有受让人

我正在粘贴下面的代码。 (我的查询是在代码之后给出的。)

HTML:

<!-- File: chapter2/more-directives.html -->
<html ng-app="notesApp">
<head>
<title>Notes App</title>
<style>
.done {
background-color: green;
}
.pending {
background-color: red;
}
</style>
</head>
<body ng-controller="MainCtrl as ctrl">
<div ng-repeat="note in ctrl.notes"
ng-class="ctrl.getNoteClass(note.done)">
<span class="label"> {{note.label}}</span>
<span class="assignee"
ng-show="note.assignee"
ng-bind="note.assignee">
</span>
</div>
</body>
</html>

脚本

<script
src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.19/angular.js">
</script>
<script type="text/javascript">
angular.module('notesApp', []).controller('MainCtrl', [
function() {
var self = this;
self.notes = [
{label: 'First Note', done: false, assignee: 'Shyam'},
{label: 'Second Note', done: false},
{label: 'Done Note', done: true},
{label: 'Last Note', done: false, assignee: 'Brad'}
];
self.getNoteClass = function(status) {
return {
done: status,
pending: !status
};
};
}]);
</script>

在上面的代码中,声明了一个数组,并且有两个元素(第一个和最后一个)在&#39;受让人中有一些值。当我执行这段代码时,我会看到数组的所有元素。 ng-show指令没有隐藏&#39; span&#39;在“受让人”中使用空值。代码是错误的还是我对ng-show的理解是错误的?

1 个答案:

答案 0 :(得分:0)

应该是这样的

<div ng-show="note.assignee">
  <span class="label"> {{note.label}}</span>
  <span class="assignee"  ng-bind="note.assignee"></span>
</div>