我有動態計算的一些時間,在NG-重複再重複,像這樣:AngularJS功能的NG-如果裏面NG-重複
<div class="col-sm-4" ng-repeat="time in scheduling.openTimes">
<label class="label label-default label-time" ng-class="{'active' : scheduling.militaryTime == time.military}" ng-click="scheduling.setTime(time.military)" ng-if="!scheduling.booked(time.military)">
{{time.display}}
</label>
</div>
而且功能scheduling.booked()
被調用每一個標籤上。如果時間「已預訂」,它應該返回true,否則返回false。
我想要顯示的時間,如果時間NOT BOOKED
。我的功能看起來是這樣的:
scheduling.booked = function(time)
{
ref.child('appointments').once('value', function(snapshot){
snapshot.forEach(function(childSnapshot){
var data = childSnapshot.val();
var sysDate = new Date(scheduling.date);
var appDate = new Date(data.date);
var appTime = data.time.military;
if(appDate.getDay() == sysDate.getDay())
{
if(appTime == time)
{
return true
}
else
{
return false
}
}
else
{
return false
}
})
})
}
它安慰了一切就像它應該但標籤不隱藏?控制檯顯示應該是。
更新
通過一些研究和大量刪除的,我這個走了過來。只要你只有一個約會,它就可以工作,做我想做的事。如果你有多個,它會複製時隙。你如何做到這一點,所以它檢查時間是否已經在數組中,如果它是跳過它?
scheduling.booked = function(time, timeDis) {
ref.child('appointments').once('value', function(snapshot) {
snapshot.forEach(function(childSnapshot) {
var data = childSnapshot.val();
var sysDate = new Date(scheduling.date).getDate();
var appDate = new Date(data.date).getDate();
var appTime = data.time.military;
if(sysDate == appDate)
{
if(appTime == time)
{
$scope.openTimes.push({
'military' : time,
'display' : timeDis,
'disabled' : true
})
}
else
{
$scope.openTimes.push({
'military' : time,
'display' : timeDis,
'disabled' : false
})
}
}
else
{
$scope.openTimes.push({
'military' : time,
'display' : timeDis,
'disabled' : false
})
}
})
});
$timeout(function(){
scheduling.openTimes = $scope.openTimes;
scheduling.timeLoading = false;
}, 1300)
}
我現在有另一個函數調用這個函數,我拋棄了ng-if。
你可以嘗試一次,通過簡單地在'scheduling.booked'函數內返回true或false,以便我們可以縮小問題的範圍嗎? –
只需使用@ stanleyxu2005的答案返回true,然後移除ref.child()就可以使函數正常工作。返回false也是如此。所以它回到我懷疑HTML是在函數返回之前解決的。 – moevans