我是AngularJS的新手,AngularJS中的一个很棒的东西是ng-hide和ng-show指令,它们可用于显示网页的某些部分或隐藏。现在有时候我不想展示一个零件而且工作正常,但有时它会起作用但是会以一种不合需要的方式。
示例:
<div class="row">
<div class="col-xs-6">
<h2>Login</h2>
<p class="text-danger">{{message}}</p>
<form name="form" novalidate>
<div class="form-group">
<label>Email: </label>
<div class="input-group">
<input type="email" name="email" ng-model="credentials.email" placeholder="Email" class="form-control" required />
<div ng-show="form.email.$invalid" class="input-group-addon">
<i class="fa fa-times-circle"></i>
</div>
<div ng-hide="form.email.$invalid" class="input-group-addon">
<i class="fa fa-check-circle"></i>
</div>
</div>
</div>
<div class="form-group">
<label>Password: </label>
<div class="input-group">
<input type="password" name="password" ng-model="credentials.password" placeholder="Password" class="form-control" required ng-minlength=5 />
<div ng-show="form.password.$invalid" class="input-group-addon">
<i class="fa fa-times-circle"></i>
</div>
<div ng-hide="form.password.$invalid" class="input-group-addon">
<i class="fa fa-check-circle"></i>
</div>
</div>
</div>
<button type="submit" class="btn btn-primary" ng-disabled="form.$invalid" ng-click="authenticate(credentials)">Login</button>
<a href="#/register">Register</a>
</form>
</div>
</div>
现在,如果字段有效,则会出现检查符号,如果它们不是交叉apears,那么:
但是如果仔细观察,带有十字符号的插件没有圆角,这可能是因为带有复选符号的插件仍然存在但是隐藏了。现在我在这种情况下该怎么做。我想在这种情况下包含检查插件的div完全消失而不是隐藏。怎么做到这一点?
答案 0 :(得分:1)
使用ngIf
(以及带有反向谓词的第二个ngIf
代替ngShow
或ngHide
。前者将从DOM中删除元素,而后者只是用CSS隐藏它们。
来自Angular文档:
ngIf
指令根据{expression}删除或重新创建DOM树的一部分。如果分配给ngIf
的表达式求值为false值,则从DOM中删除该元素,否则将元素的克隆重新插入DOM中。
相比之下,ngShow
文档通过添加.ng-hide
类来解释隐藏它:
ngShow
指令根据提供给ngShow
属性的表达式显示或隐藏给定的HTML元素。通过将.ng-hide
CSS类移除或添加到元素上来显示或隐藏元素。.ng-hide
CSS类在AngularJS中预定义,并将显示样式设置为none(使用!important
标志)。
答案 1 :(得分:1)
请尝试ng-if="form.password.$invalid"
和ng-if="! form.password.$invalid"
;从DOM中删除元素。
查看ngIf documentation进一步研究。代码段:
<div class="input-group">
<input type="password" name="password" ng-model="credentials.password" placeholder="Password" class="form-control" required ng-minlength=5 />
<div ng-if="form.password.$invalid" class="input-group-addon">
<i class="fa fa-times-circle"></i>
</div>
<div ng-if=" ! form.password.$invalid" class="input-group-addon">
<i class="fa fa-check-circle"></i>
</div>
</div>