0

我正在使用Annotator.js2.0.0(此处的文档)来注释页面。我正在按照文档中的说明初始化注释器,如下所示:

var app = new annotator.App();
app.include(annotator.ui.main);
app.start();

我知道 Annotator.js 提供了一个存储模块,但这需要实现一个不适用于我的用例的 API,因为我需要将注释与特定页面和用户相关联,并按页面/用户获取它们 - 不是只是注释ID。即使这样,我也不清楚如何在页面上实际显示这些注释。

我的问题是:如何在页面上加载和显示这些注释?

更新:我想出了如何使用自定义模块获取注释:

function getAnnotation() {
    return {
    annotationCreated: (annotation) => window.annotations[annotation.id] = annotation,
    annotationUpdated: (annotation) => window.annotations[annotation.id] = annotation
  }
}

var app = new annotator.App();
app.include(annotator.ui.main);
app.include(getAnnotation);
app.start();

这使我可以保存和更新annotation对象上window.annotationsreturn对象为模块挂钩(基本上是事件)提供功能。其中一个请求钩子是start,它允许我在初始化注释器时运行代码。但是,我不确定要调用什么方法来创建注释。

我试过app.annotations.create()了,但是即使传递了一个由 annotator.js 创建的注释对象,它也会创建一个注释框(即用户可以键入的地方),并且实际上并没有创建注释。所以现在,即使我能够保存和更新注释,我仍然无法以编程方式创建它们(从 localStorage 或自定义后端 API)。

更新 2:文档建议您可以调用annotationsLoaded钩子,然后传递注释数据,但我看不到用于传递此数据的格式。我已经尝试将其作为格式如下的对象:

app.runHook('annotationsLoaded', { 0: {annotation object} });

还有一个数组,正如API建议的那样,应该返回数据:

app.runHook('annotationsLoaded', {"rows": [{annotation object}]);

这些方法都没有在页面上创建注释。我在这里想念什么?

4

0 回答 0