如何在ng-if AngularJS中使用JavaScript?

Red*_*Red 3 javascript angularjs

我试图用一个JavaScript表达式ng-if.但是,它没有做任何事情.它总是回归false.

我尝试的是以下内容:

ng-if="localStorage.getItem('grid-layout') == 'list' (如果是,则显示div)

div好好尝试一下渲染,因为它永诺返回false.网格布局值保存在localStorage.这不是问题.

我检查了网站上的文档.Angular说下面的内容ng-if

https://docs.angularjs.org/api/ng/directive/ngIf

如果表达式是假的,那么该元素将从DOM树中删除.如果它是真实的,则编译元素的副本被添加到DOM树中.

JavaScript内部可以使用ng-if吗?如果没有,我怎样才能实现我想做的事情?

iam*_*ith 6

您可以在ng-if中使用Javascript表达式,但只能访问$scope当前模板中的属性.

localStorage除非您专门将其添加到$scope对象中,否则您不太可能使用它.

一种方法是在控制器中编写附加到$ scope的函数:

//in controller JS
$scope.checkLocalStorage = function() {
    return localStorage.getItem('grid-layout') == 'list';
}

//In template
<div ng-if="checkLocalStorage()"></div>
Run Code Online (Sandbox Code Playgroud)