AngularJS使用ng if vs ng show
在我的AngularJS中,我有以下代码,其中我检查是否有当前登录的用户,以便在没有用户登录的情况下将顶部应用程序菜单文本从登录切换到注销登录,反之亦然。当我使用ng show ng hide时,应用程序开始非常沉重,所以我尝试切换到ng if,但是顶部菜单上的css效果开始无法在登录/注销选项卡中特别工作。所以,有人能告诉我什么是最好的方法来处理这种情况的例子,请?谢谢 index.htmlAngularJS使用ng if vs ng show,angularjs,Angularjs,在我的AngularJS中,我有以下代码,其中我检查是否有当前登录的用户,以便在没有用户登录的情况下将顶部应用程序菜单文本从登录切换到注销登录,反之亦然。当我使用ng show ng hide时,应用程序开始非常沉重,所以我尝试切换到ng if,但是顶部菜单上的css效果开始无法在登录/注销选项卡中特别工作。所以,有人能告诉我什么是最好的方法来处理这种情况的例子,请?谢谢 index.html <div ng-controller="MenuController"> &l
<div ng-controller="MenuController">
<li>
<div ng-if="userLevel() == 1">
<a href="#/login">Login</a>
</div>
<div ng-if="userLevel() == 2">
<a href="#/logout">Logout</a>
</div>
</li>
</ul>
</div>
ng show和ng if之间的区别在于,当指定的表达式为假值时,ng show对元素应用display:none,而ng if从DOM中删除节点,基本上相当于jQuery中的.empty
一个可以考虑元素的方法,而不是在控制器中使用它,使用一个用于访问级别的指令,并遵循本文中描述的方法,这是非常灵活的,并且允许用户根据用户级别在UI中具有不同的元素:
检查用户级别时应用程序运行缓慢的另一个原因可能是,每次评估应用程序时,应用程序都必须在服务器端执行检查,从而使应用程序运行缓慢。一种方法是缓存该查询的结果,然后在登录状态不变的情况下使用它。在该阶段,您可以使缓存失效并再次获取用户级,准备更新UI。ng show和ng if之间的区别在于,ng show在指定表达式为假值时对元素应用显示:无,而ng if从DOM中删除节点,基本上相当于jQuery中的.empty一个可以考虑元素的方法,而不是在控制器中使用它,使用一个用于访问级别的指令,并遵循本文中描述的方法,这是非常灵活的,并且允许用户根据用户级别在UI中具有不同的元素:
检查用户级别时应用程序运行缓慢的另一个原因可能是,每次评估应用程序时,应用程序都必须在服务器端执行检查,从而使应用程序运行缓慢。一种方法是缓存该查询的结果,然后在登录状态不变的情况下使用它。在此阶段,您可以使缓存失效并再次获取用户级别,准备更新UI。ng if指令从页面中删除内容,ng show/ng hide使用CSS display属性隐藏内容 我非常确定,没有任何节目比ng if更轻,也不应该让应用程序太重。如果它变得沉重,我认为可能还有其他原因。ng If指令从页面中删除内容,ng show/ng hide使用CSS display属性隐藏内容 我非常确定,没有任何节目比ng if更轻,也不应该让应用程序太重。如果它变得很重,我认为可能还有其他原因。如果只在条件为真时渲染节点,则使用ng 在ng show ng hide的情况下,将渲染节点,但如果条件更改,则根据条件显示/隐藏相同的节点。如果仅在条件为真时渲染节点,则使用ng,则显示/隐藏相同的节点 如果使用ng show ng hide,则将渲染节点,但如果条件发生变化,则会根据条件显示/隐藏相同的节点。如果使用ng仅渲染满足条件的代码,则会显示/隐藏相同的节点 虽然ng show ng hide将在页面上呈现代码,但将在CSS属性的帮助下隐藏 因此,最好使用ng if来减少要在页面上呈现的代码行。当您使用ng if时,它将只呈现满足条件的代码 虽然ng show ng hide将在页面上呈现代码,但将在CSS属性的帮助下隐藏因此,最好使用ng if来减少要在页面上呈现的代码行。这听起来很奇怪,您会遇到性能问题,我想这就是极其繁重的含义。UService.checkULevel中发生了什么?我在回答中为UService添加了一种不同的方法,这可能很有用。@ivarni只不过是读取一个$.cookie值。这就让我感到困惑,因为NG显示为什么是NG的性能冲击。我不明白这是怎么发生的,正如所有答案所指出的,ng show所做的只是应用display:none,而ng if将退出并实际更改DOM。@ivarni在没有show的情况下,我注意到,在使用ng show时,几乎我在任何表单字段中写入的每一个键、每一个字符都会调用函数userLevel,因此,几乎每个字符都写在任何应用程序表单字段中,应用程序就会读取cookie值。可能这就是性能缓慢的原因…不确定,但我确实如此
只是解释一下在测试中会发生什么听起来很奇怪,你会遇到性能问题,我想这就是“极度沉重”的含义。UService.checkULevel中发生了什么?我在回答中为UService添加了一种不同的方法,这可能很有用。@ivarni只不过是读取一个$.cookie值。这就让我感到困惑,因为NG显示为什么是NG的性能冲击。我不明白这是怎么发生的,正如所有答案所指出的,ng show所做的只是应用display:none,而ng if将退出并实际更改DOM。@ivarni在没有show的情况下,我注意到,在使用ng show时,几乎我在任何表单字段中写入的每一个键、每一个字符都会调用函数userLevel,因此,几乎每个字符都写在任何应用程序表单字段中,应用程序就会读取cookie值。可能这就是性能缓慢的原因…不确定,但我只是解释一下测试中会发生什么
controller('MenuController',
function MenuController($scope, UService){
$scope.userLevel = function(){
var userType = UService.checkULevel(); //This will return either 1, 2,3,4...etc
return userType;
};
});