У меня в шаблоне вида есть кнопка:
<button ng-show="buttonAddFriendVisibled()">Добавить в друзья</button>
Она должна быть видна, если функция buttonAddFriendVisibled() возвращает true. Эта функция описана, соответственно, в контроллере вида:
// Определение видимости кнопки Добавить в друзья
$scope.buttonAddFriendVisibled = function() {
return (
$scope.authenticated.hasFriend(user)
.then(function(hasFriend) {
return $scope.user.id != $scope.authenticated.id && !hasFriend;
})
);
};
Как вы догадываетесь, там используется $http и $q.resolve, которые запускают $digest и все это приводит к бесконечному циклу:
angular.js:63 Uncaught Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!
10 $digest() iterations reached. Aborting!
Watchers fired in the last 5 iterations: [[{"msg":"buttonAddFriendVisibled()","newVal":{},"oldVal":{}},{"msg":"buttonRemoveFriendVisibled()","newVal":{},"oldVal":{}}],[{"msg":"buttonAddFriendVisibled()","newVal":{},"oldVal":"<>"},{"msg":"buttonRemoveFriendVisibled()","newVal":{},"oldVal":"<>"}],[{"msg":"buttonAddFriendVisibled()","newVal":{},"oldVal":"<>"},{"msg":"buttonRemoveFriendVisibled()","newVal":{},"oldVal":"<>"}],[{"msg":"buttonAddFriendVisibled()","newVal":{},"oldVal":"<>"},{"msg":"buttonRemoveFriendVisibled()","newVal":{},"oldVal":"<>"}],[{"msg":"buttonAddFriendVisibled()","newVal":{},"oldVal":"<>"},{"msg":"buttonRemoveFriendVisibled()","newVal":{},"oldVal":"<>"}]]
Как мне сделать вычисление видимости кнопки, если видимость зависит от авторизованного пользователя?