我在angularJS應用程序中具有以下HTML部分。約會列表的< div/>標籤顯示約會列表。這個指令基本上只是一個表格。angularJS指令不立即遵守ng-show/ng-hide
<div ng-show="loading">Loading...</div>
<div ng-show="!loading && (appointments.length == 0)">No Appointments Found</div>
<div ng-hide="loading || (appointments.length == 0)">Test123</div>
<div ng-hide="loading || (appointments.length == 0)" appointment-list source="appointments" appointment-selected="appointmentSelected(appointment)"></div>
然後,我在我的控制器中有以下內容。我正在設置一個加載變量,同時我還根據文本框中的文本過濾頁面上的約會。
$scope.$watch('selectedDate', function(newVal, oldVal) {
if (newVal) {
$scope.loading = true;
Appointment.query({year: newVal.getYear()+1900, month: newVal.getMonth()+1, day: newVal.getDate()}, function(data) {
$scope.allAppointments = data;
$scope.appointments = $scope.filterAppointments();
$scope.loading = false;
});
}
});
我的問題是,我的自定義指令的div隱藏不正確。該表應該與「Test123」字符串一起消失,而不是。當我從表中填入日期而沒有任何內容的日期時,「Test123」將替換爲加載(因爲它被隱藏,並顯示加載),但表格會一直保留到加載過程結束在這一點完成表將消失
有人可以解釋爲什麼延遲?爲什麼指令沒有像上面的div一樣響應?
編輯
這裏是一個plnkr這說明問題:http://plnkr.co/edit/khxQuaM6sxTx5RszvowX?p=preview
基本上按一下按鈕,在頂部加載兩個數據集。我有一個超時在那裏模擬服務器上的一些思考時間。每當你看到「Loading ...」時,不應該顯示appointmentList表格的div,因爲ng-hide會評估爲true,因爲加載是真實的,但是不會消失。
您可以創建一個的jsfiddle? – zsong
我已經添加了一個plnkr示例。 –