使用ng-if与值或函数有什么区别吗?
ng-if="myvalue" ng-if="myfunc()"
更新(为了更好地理解我为什么要)
<div class="navbar navbar-default navbar-static-top" data-ng-controller="NavController as nav"> <div class="container"> <ul class="nav navbar-nav"> <a data-ui-sref="home" class="navbar-brand"><i class="logo"></i> Angular Express</a> <li ui-sref-active="active"><a data-ui-sref="home">Home</a></li> </ul> <ul class="nav navbar-nav navbar-right" data-ng-if="!nav.isAuthenticated()"> <li><a data-ui-sref="session.login">Log in</a></li> <li><a data-ui-sref="session.signup">Sign up</a></li> </ul> <ul class="nav navbar-nav navbar-right" data-ng-if="nav.isAuthenticated()"> <li><i class="fa fa-user"></i> <span ng-bind="nav.isAuthenticated().username"></span> <a href="/api/auth/logout" data-ng-click="nav.logout()">Logout</a></li> </ul> </div> </div>
function NavController($rootScope, UserStorage){ var nav = this; nav.isAuthenticated = function() { UserStorage.get(); }; } function UserLoginController($rootScope,$state, Users, UserStorage) { var user = this; user.data = {}; user.save = function() { Users.login(user.data).then(function(response) { console.log(response.data); UserStorage.set(response.data); $state.go('home'); }) .catch(function(response) { console.log(response); user.errors = response.data; }); }; }
如果我这样使用,我已经达到了$ digest()迭代
(对于chandermani评论)
function UserStorage($sessionStorage) { return { set: function(data) { $sessionStorage.user = angular.toJson(data); }, get: function() { return angular.fromJson($sessionStorage.user); }, del: function() { delete $sessionStorage.user; } }; }
对于角度都是expression,它将在当前范围内进行评估。Angular在每个摘要周期执行此操作。
expression
如果您使用的是功能方式,则还有更多的射击方法。myfunc可以做
myfunc
$scope.myfunc=function() { //do some time consuming work return data; };
在这种情况下,对每个摘要循环的绑定评估会使您的绑定和应用程序变慢。
因此,如果您使用的是基于函数的绑定,请确保通过最少的处理使函数快速返回。