Dưới đây là một cách tiếp cận đơn giản hơn mà làm việc cho các nhu cầu của tôi. Tùy thuộc vào hành động của bạn, bạn sẽ kết hợp hàm setDelay()
với phần tử. Ví dụ, trong trường hợp của tôi, tôi gắn setDelay()
vào đầu vào được chọn.
kích hoạt HTML:
<select class="first-option"
ng-change="setDelay()"
ng-options="o.label for o in download.options"
ng-model="optionModel" required>
</select>
Trong điều khiển của bạn, thêm một chức năng đơn giản setDelay
đó sẽ thay đổi cờ $scope.delay
:
$scope.setDelay = function(){
$scope.delay = true;
$timeout(function(){
$scope.delay = false;
}, 200);
};
Sau đó, bạn chỉ có thể sử dụng $scope.delay
như một lá cờ trong ng- hiển thị:
<div class="loading-div" ng-show="delay">
<img src="loading_spinner.gif">
</div>
Và hiển thị nội dung af ter thực hiện tải:
<div ng-show="!delay">
Content is loaded.
</div>
Bây giờ, mỗi khi người sử dụng chọn một giá trị mới trong trình đơn thả xuống, nó sẽ kích hoạt $scope.delay
được thiết lập để true
gây ra spinner để hiển thị, và khi nó đạt đến 200
, nó sẽ được thiết lập để false
làm cho spinner để ẩn.
Bạn đã xem tài liệu chưa? [link] (https://docs.angularjs.org/api/ng/directive/ngShow) Cuộn xuống dưới và bạn sẽ thấy một mẫu chuyển tiếp và ng-show – graphefruit
Bạn thực sự muốn đạt được điều gì ở đây? Bạn muốn có một sự chậm trễ để cho các hoạt động nhanh chóng nó không chỉ * nhấp nháy * và tắt, nhưng đối với hoạt động lâu hơn nó xuất hiện? Chỉ cần một chỉ báo tải mục đích chung? – Josh