Como usar um Ng-if com Firebase
Eu sei que a diretiva ng-if cria um novo escopo filho e gostaria de saber como e se é possível reproduzir um ng-if em outra.
Por enquanto não consigo ver nenhum ícone. Eu tentei ng-hide, mas vi os dois ícones ao mesmo tempo, impossíveis de resolver esse problema ... Eu também tentei o ng-show, mas com os mesmos resultados que o ng-if.
A função Set () retorna true ou false, está funcionando porque eu posso ver o resultado no console.
Alguma ideia ?
$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>
EDIT:
Eu adicionei a função set (), $ r é um registro de um banco de dados Firebase, tem uma variável "selfID" com seu ID de registro.
Eu tenho certeza que a função give () está funcionando, porque eu tenho outro botão rodando com o ng-if = "give (f) === true".
Todo esse código está funcionando no mesmo controlador.
EDIÇÃO 2: (novo trecho)
EDIT 3: (adicione $ q na dependência)
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;
}
});
}
};
EDIT 4: (Finalmente)
Ok, não consegui lidar com os problemas síncronos, então simplesmente adicionei um teste dentro dos dois ng-if, portanto, sem a função set ().
Muito obrigado por quem me ajudou, e especialmente @georgeawg por sua experiência!
<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>