【发布时间】:2017-04-21 17:17:33
【问题描述】:
我知道 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 数据库的记录,它有一个带有记录 ID 的“selfID”变量。
我确定 give() 函数正在运行,因为我还有一个使用 ng-if="give(f) === true" 运行的按钮。
整个代码都在同一个控制器上运行。
编辑 2: (新的sn-p)
编辑 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>
【问题讨论】:
-
您确定 give(f) 正在返回预期结果吗?
-
这些
give和set函数是否在修改控制器的状态?可以提供这些 JS sn-ps 吗? -
请在minimal reproducible example 中提供所有相关代码。现在,没有办法知道出了什么问题。可能是您的
set函数在ng-if范围内返回undefined,这与true或false不匹配... -
ion-icon不使用name属性而不是class属性来设置图标吗? -
当我编辑我的帖子时,是的 give(f) 为我提供了正确的结果。 Give() 和 set() 在同一个控制器中,第一个在工作,另一个不在...
标签: javascript angularjs firebase angular-promise