Skip to content

legado.ui.emit

向前端推送自定义事件。GUI 模式下前端通过 listen('script:ui') 接收。

签名

js
legado.ui.emit(eventName, data) → void
参数类型说明
eventNamestring事件名称
dataany事件数据(可为任意 JSON 可序列化的值)

示例

推送加载进度

js
function chapterList(tocUrl) {
  var chapters = [];
  var totalPages = 5;

  for (var p = 1; p <= totalPages; p++) {
    legado.ui.emit('progress', {
      current: p,
      total: totalPages,
      hint: '正在加载目录第 ' + p + ' 页...'
    });

    var resp = legado.http.get(tocUrl + '?page=' + p);
    var list = JSON.parse(resp).list || [];
    for (var i = 0; i < list.length; i++) {
      chapters.push({ name: list[i].title, url: list[i].url });
    }
  }

  legado.ui.emit('progress', {
    current: totalPages,
    total: totalPages,
    hint: '目录加载完成,共 ' + chapters.length + ' 章'
  });

  return chapters;
}

自定义业务事件

js
legado.ui.emit('custom:login-required', { redirectUrl: BASE + '/login' });
legado.ui.emit('custom:vip-content', { chapterUrl: url, price: 2 });

前端监听(Vue 组件中)

js
import { listen } from '@tauri-apps/api/event'

const unlisten = await listen('script:ui', (event) => {
  const { event: evtName, data } = event.payload
  if (evtName === 'progress') {
    console.log('进度:', data.current, '/', data.total, data.hint)
  }
})

基于 MIT 许可发布