Ajax 进度栏
绝大多数移动应用和桌面应用都需要通过 Ajax call 来与服务端进行通信。 由于通信过程可能需要花费部分时间,为了好的用户体验,您可以在一个请求开始时使用 QAjaxBar 组件来给予用户反馈。
QAjaxBar 是一个用于自动展示 Ajax 请求进度的组件,当然也可以手动触发。
TIP
如果您想用一种更简单、更方便的方式为您的用户提供一个 Ajax Bar,更推荐您去看看Loading Bar Plugin
QAjaxBar API
reverse
: Boolean
说明
逆转进度方向
skip-hijack
: Boolean
说明
跳过 Ajax 劫持(不是一个响应式属性)
hijack-filter
: (url) => Boolean
v2.4.5+
说明
过滤哪些 URL 可以触发 start() + stop()
用法
QAjaxBar 组件默认会自动捕获 Ajax 调用,然后展示它的进度。(除非您禁止了它的自动捕获)。
出于演示的目的,下面的示例是使用手动触发的方式。当您点击按钮的时候页面的底部会出现一个 10px 左右的进度条,当然他的大小和颜色都是可以自定义的, 请查阅 API 部分以帮助您了解它的所有属性。
基础
过滤 Ajax 请求 v2.4.5+
默认会捕获所有的 ajax 请求,如果您想它只捕获指定的请求,可以使用 hijackFilter
属性来实现:
<template>
<q-ajax-bar :hijack-filter="myFilterFn" />
</template>
<script>
export default {
setup () {
return {
myFilterFn (url) {
// 例如: (只有请求 https://my-service.com/* 这个地址时才会触发
return /^https:\/\/my-service\.com/.test(url)
}
}
}
}
</script>
提示
- 如果 Ajax Bar 同时捕获多个事件,
@start
和@stop
仍然只会触发一次 - 每个 Ajax 请求开始时都会触发
start()
事件结束的时候都会触发stop()
事件。所以若您想要手动的触发 QAjaxBar,您需要在请求开始的时候去调用他的start()
方法,在请求结束的时候去调用他的stop()
方法。 - 只有使用 XMLHttpRequest (XHR). 时 Ajax Bar 才会自动捕获,如果你使用浏览器原生的 Fetch API 则不会自动触发 Ajax Bar。