Denetleyicimde, bir konsol.log dosyasını damgalamak için çok kolay bir işleve sahibim. Bir fonksiyonu kullanarak bir düğmeyi ayarlamaya ihtiyacım var ama ng tekrarı içinde kontrol cihazı her şeyi tekrar eder! Bu normal mi? Bunu önlemek mümkün mü? Teşekkürler. Burada bir örnek http://plnkr.co/edit/sME67gQEZQSLI9FOwEAG?p=previewAngularjs ng-repeat işlevinde çok fazla kez çağrılıyor
göreli kodu:
<!DOCTYPE html>
<html>
<head>
<script data-require="[email protected]" data-semver="1.4.5" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body ng-app="DigestApp">
<div ng-controller="UserCtrl as uc">
<h1>Please open the console to see</h1>
<ul>
<li ng-repeat="user in uc.users" ng-class="uc.userClasses(user)">
{{user.name}}
<button ng-if="uc.isUserEnabled(user)"
ng-click="uc.disableUser(user)">Disable</button>
</li>
</ul>
</div>
</body>
</html>
javascript: Aşağıdaki HTML içinde
angular.module("DigestApp", [])
.controller('UserCtrl', function(User) {
var vm = this;
vm.users = User.list();
vm.isUserEnabled = function(user) {
console.log('isUserEnabled');
return user.active;
};
vm.userClasses = function(user) {
console.log('userClasses');
return []
.concat(user.active ? ['user-active'] : [])
.concat(user.loggedIn ? ['user-logged-in'] : [])
.concat(user.isMe ? ['user-is-me'] : [])
.join(' ');
};
vm.disableUser = function(user) {
user.active = false;
};
})
.factory('User', function() {
return {
list: function() {
return [{
name: "me",
active: true,
loggedIn: true,
isMe: true
}];
}
};
});
Bu nasıl 'ng-class' direktifli çalışmadır .. her sindirimdeki ifadeyi değerlendirir .. –