我正在使用Annotator.js
2.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.annotations
的return
对象为模块挂钩(基本上是事件)提供功能。其中一个请求钩子是start
,它允许我在初始化注释器时运行代码。但是,我不确定要调用什么方法来创建注释。
我试过app.annotations.create()
了,但是即使传递了一个由 annotator.js 创建的注释对象,它也会创建一个注释框(即用户可以键入的地方),并且实际上并没有创建注释。所以现在,即使我能够保存和更新注释,我仍然无法以编程方式创建它们(从 localStorage 或自定义后端 API)。
更新 2:文档建议您可以调用annotationsLoaded
钩子,然后传递注释数据,但我看不到用于传递此数据的格式。我已经尝试将其作为格式如下的对象:
app.runHook('annotationsLoaded', { 0: {annotation object} });
还有一个数组,正如API建议的那样,应该返回数据:
app.runHook('annotationsLoaded', {"rows": [{annotation object}]);
这些方法都没有在页面上创建注释。我在这里想念什么?