我试图理解ng-if和ng-show/ 之间的区别ng-hide,但它们看起来和我一样.
我是否应该记住选择使用其中一种?
嘿,我有这段代码:
<div ng-repeat="i in values">
{{i}}
</div>
Run Code Online (Sandbox Code Playgroud)
它的工作原理,但我想在循环中添加额外的条件,如:
<div ng-repeat="i in values">
{{i}}
if(i !== 0){
<div></div>
}
</div>
Run Code Online (Sandbox Code Playgroud)
我怎样才能实现这一目标?
我看过这个问题,它说:
"例如,如果将一个单击处理程序绑定到一个子元素,当ng-if计算结果为true时,该元素将从DOM中删除,并且您的单击处理程序将不再起作用,即使在ng-if后面的计算结果为true之后也是如此并显示元素.您需要重新附加处理程序."
虽然重新连接处理程序意味着什么?对于此示例,即使我删除并添加元素,绑定到ng-click的函数实际上也可以工作.
<tr ng-if="!useUserLoginTemplate" class="showRowAnimation">
<td>Template</td>
<td>
<input type="file" file-model="loginTemplateFile">
<span class="btn btn-primary" ng-click="uploadLoginTemplateFile()">Upload</span>
</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
我无法使用$ scope.loginTemplateFile访问该文件,就像我使用没有ng-if的版本一样.
文件模型指令链接功能:
link: function(scope, element, attrs) {
var model = $parse(attrs.fileModel);
var modelSetter = model.assign;
element.bind('change', function(){
scope.$apply(function(){
modelSetter(scope, element[0].files[0]);
});
});
}
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?
我有一个AngularJS单页面应用程序,其中有很多HTML块,我根据他们的权限级别向用户显示.
用户权限由service呼叫确定,并且基于权限设置值.
$scope.permission = 'admin'
我可以使用ng-hide/show指令根据权限隐藏这些块.但我担心安全问题.通过更改css display属性,未经授权的人也可以查看这些块.
另一种选择是ng-if,我目前正在使用它.但我想知道我是否应该这样做routing,我相信这更安全.我可以使用ui.router角度模块来实现这一点.但是正确的方法是什么?
我应该使用ng-hide/show,ng-if还是routing?
期待一些好的想法.
任何帮助是极大的赞赏.提前致谢.