[英]Angular ng-hide directive in pure JS
在AngularJS中,您可以使用ng-hide
隐藏HTML元素。 您将如何使用纯JS / jQuery执行此操作? 如果您有类似<div id="userNotLoggedIn"></div>
,它是$("#userNotLoggedIn").hide()
还是$("#userNotLoggedIn").remove()
或其他东西? 目的是如果站点访问者未以用户身份登录,则不允许他们访问该页面。
好吧,如果您想实际复制ng-hide,则可以使用jQuery.addClass方法。
ngHide只是监视绑定到其的模型值,因此添加/删除了ng-hide类。 此类仅添加一个CSS规则“ display:none”,将元素隐藏。
但是,将其用于基于身份验证的角色通常不是一个好主意。 您只是使其变得不可见,但它仍将存在于DOM中,因此可以访问。
就像是
$('#userNotLoggedIn').css('display', 'none');
也许?
但是,如果您希望能够应用并撤消它,我建议您放置display: none
在自己的类中display: none
可以随意放置和移除的类。
就像是
.myHideClass {
display: none;
}
$(`#userNotLoggedIn`).addClass('myhideClass');
$(`#userNotLoggedIn`).removeClass('myhideClass');
现在,当您执行任何逻辑时,都必须查看它们是否已登录,而在登录时什么也不做。 如果未登录,则添加myHideClass
,一旦登录,请删除myHideClass
编辑:
但是,有一个问题是我很确定display: none;
如果您使用的是调试器,则元素仍将在DOM中可见。
Angular具有ng-if
属性,您可以放置标签并绑定到布尔值。 类似于ng-if="userIsLoggedIn"
,其中userIsLoggedIn
是控制器中的布尔值,设置为true
或false
。
在dom中, userIsLoggedIn
为true时,元素及其中的所有内容都在dom中,但是; 如果userIsLoggedIn === false
则在dom中(如果您检查),则div不可见。
您将在dom中看到的是<!--ng-if="userIsLoggedIn"-->
,一旦布尔值翻转为true,则注释的html行将变成您的所有实际html。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.