Skip to content
On this page

Events

Obsidian 中的许多接口允许您订阅整个应用中的事件,例如当用户对文件进行更改时。

每当插件卸载时,任何注册的事件处理程序都需要被分离。确保发生这种情况的最安全方法是使用 registerEvent() 方法。

ts
import { Plugin } from "obsidian";

export default class ExamplePlugin extends Plugin {
  async onload() {
    this.registerEvent(this.app.vault.on('create', () => {
      console.log('a new file has entered the arena')
    }));
  }
}

定时事件

如果您想定时重复调用一个方法的话,可以使用 window.setInterval() 函数和 registerInterval() 方法。

下例中实现了在状态栏中显示当前时间,并且每秒更新:

ts
import { moment, Plugin } from "obsidian";

export default class ExamplePlugin extends Plugin {
  statusBar: HTMLElement;

  async onload() {
    this.statusBar = this.addStatusBarItem();

    this.updateStatusBar();

    this.registerInterval(
      window.setInterval(() => this.updateStatusBar(), 1000)
    );
  }

  updateStatusBar() {
    this.statusBar.setText(moment().format("H:mm:ss"));
  }
}

TIP

Moment 是一个非常流行的用来处理时间跟日期的 Javascript 库。Obsidian 内部使用了这个库,您无需手动安装。您可以直接从 Obsidian API 中引入:

ts
import { moment } from "obsidian";