angularjs ng-wenn die Differenz zwischen Wert und Funktion
Ist, gibt es einen Unterschied mit
ng, ob ein Wert oder eine Funktion ?
ng-if="myvalue"
ng-if="myfunc()"
UPDATE (für ein besseres Verständnis, warum ich das verlange)
html
<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>
js
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;
});
};
}
Wenn ich wie diese ich habe einen $digest() Iterationen erreicht
RE-UPDATE
(für chandermani Kommentar)
function UserStorage($sessionStorage) {
return {
set: function(data) {
$sessionStorage.user = angular.toJson(data);
},
get: function() {
return angular.fromJson($sessionStorage.user);
},
del: function() {
delete $sessionStorage.user;
}
};
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eckige beide sind
expression
, dass es evaluiert und im Kontext der aktuellen scope. Winkel tut das auf jeden digest-Zyklus.Gibt es mehr Möglichkeiten, um zu Schießen in den Fuß, wenn Sie die Funktion Weg.
myfunc
tun könnteIn einem solchen Fall ist die verbindliche Evaluierung auf jeden digest-Zyklus wird Ihre Bindung, und die app langsam.
Also, wenn Sie über die Funktion basiert verbindlich, stellen Sie sicher, dass Funktionen zurück fallen durch tun minimalen Verarbeitung.
UserStorage.get();
return angular.fromJson($sessionStorage.user);
, die nicht original vergleichen. Entweder bleiben Sie Weg von Funktion oder verwenden Sie die navigationssteuerung.isAuthenticated = function() { return UserStorage.get()!==null; };Aufruf von Funktionen auf der ng-repeat-Anweisungen können dazu führen, dass einige performance-Probleme, aber wenn es eine einmalige Auswertung dann gibt es nicht wirklich einen Unterschied soweit ich das mitbekommen habe.
Ich versuche immer, bewerten die Immobilie:
ng-if="myValue"
würde bewerten die scope-variable$scope.myValue