Арф, я добавил $ q, и я уверен, что я близок к чему-то, но все равно из ng-if результат моей функции set () недоступен ... :( Является ли моя новая функция (Edit 3), правильный ?
ю, что директива ng-if создает новую дочернюю область, и я хотел бы знать, КАК и ЕСЛИ возможно превратить ng-if в другую.
Пока я не вижу никаких значков. Я пробовал ng-hide, но я видел две иконки одновременно, невозможно решить эту проблему ... Я также пробовал ng-show, но с теми же результатами, что и ng-if.
Функция Set () возвращает true или false, она работает, потому что я вижу результат в консоли.
Есть идеи ?
$scope.set = function($r)
{
firebase.database().ref('events/'+$r.selfID).once("value").then(function(snapshot)
{
var nbPerson = snapshot.val().nbPerson;
var varPerson = snapshot.val().varPerson;
//console.log("nbPerson :", nbPerson);
//console.log("varPerson", varPerson);
if(nbPerson === varPerson)
{
//console.log("true");
return true;
}
else
{
//console.log("false");
return false;
}
});
};
<button ng-if ="give(f) === false" class="badge badge-positive" ng-click="joinEvent(e)">
<span ng-if ="set(r) === true">
<ion-icon class="ion-person-add give-var"></ion-icon>
</span>
<span ng-if ="set(r) === false">
<ion-icon class="ion-person-add var"></ion-icon>
</span>
</button>
РЕДАКТИРОВАТЬ :
Я добавил функцию set (), $ r - это запись из БД Firebase, у нее есть переменная «selfID» с его идентификатором записи.
Я уверен, что функция give () работает, потому что у меня есть другая кнопка, работающая с ng-if = "give (f) === true".
Весь этот код работает на одном контроллере.
РЕДАКТИРОВАТЬ 2: (новый фрагмент)
РЕДАКТИРОВАТЬ 3: (добавить $ q в зависимости)
function ($scope, $rootScope, $q, $stateParams, $firebase, $firebaseArray, $state, $ionicPopup) {
$scope.set = function($r)
{
$scope.varPerson = "";
$scope.nbPerson = "";
var basePromise = firebase.database().ref('events/'+$r.selfID).once("value");
$q.when(basePromise).then(function(snapshot)
{
$scope.nbPerson = snapshot.val().nbPerson;
$scope.varPerson = snapshot.val().varPerson;
if($scope.nbPerson === $scope.varPerson)
{
return true;
}
else
{
return false;
}
});
}
};
РЕДАКТИРОВАТЬ 4: (наконец)
Хорошо, я не смог справиться с синхронными проблемами, поэтому я просто добавил тест внутри двух ng-if, то есть без функции set ().
Большое спасибо тем, кто мне помог, и особенно @georgeawg за его опыт!
<span ng-if ="r.nbPerson === r.varPerson">
<ion-icon class="ion-person-add give-var"></ion-icon>
</span>
<span ng-if ="r.nbPerson > r.varPerson">
<ion-icon class="ion-person-add var"></ion-icon>
</span>