我对 Alfresco Aikau 很陌生,我只是不明白有效载荷是如何工作的。有很多使用有效负载的示例,但我没有建立连接。
我似乎找到的所有示例都表明(对我而言)有效负载用于定义将加载并返回到小部件的数据列表。
但是,数据列表似乎总是一个 url,我假设 url 的结果是一个 json 对象。
如果我想调用构建 json 对象并将其返回到小部件的 webscript 怎么办?这样做的机制是什么?我是否将其加载到有效负载中,如果是,如何加载?
希望你能理解我的困惑,并能指出我正确的方向。
谢谢
我对 Alfresco Aikau 很陌生,我只是不明白有效载荷是如何工作的。有很多使用有效负载的示例,但我没有建立连接。
我似乎找到的所有示例都表明(对我而言)有效负载用于定义将加载并返回到小部件的数据列表。
但是,数据列表似乎总是一个 url,我假设 url 的结果是一个 json 对象。
如果我想调用构建 json 对象并将其返回到小部件的 webscript 怎么办?这样做的机制是什么?我是否将其加载到有效负载中,如果是,如何加载?
希望你能理解我的困惑,并能指出我正确的方向。
谢谢
Aikau 使用发布/订阅模型来完全解耦所有小部件和服务。“有效负载”是在主题上发布并由订阅者使用的对象。没有单一的有效负载类型,每个小部件和服务可能期望包含不同数据的不同有效负载。我们一直在研究开箱即用的小部件使用的所有主题,并将它们移动到常量模块和JSDoc中,该文档记录了每个主题的每个有效负载的结构。
在回答您的具体问题时 - 列表包中的一个小部件(最基本的是 alfresco/lists/AlfList)将发布一个请求加载数据的有效负载。列表可以与任何服务一起使用,因此发布的主题将根据您希望使用的服务而有所不同,同样发布的有效负载也会有所不同。
例如,如果您使用 CrudService,那么有效负载将需要包含要加载的 URL。大多数其他服务不需要 URL,因为它们被编写为处理特定数据并使用已知 URL 来检索该数据。
尽管在所有情况下都使用 CrudService 可能很诱人,但使用专用服务有很多好处——包括编写你自己的自定义服务——以规范返回的数据(因为许多基于 WebScript 的核心 REST API 不遵循一个共同的模式)。
当服务加载数据时,它将在响应主题上发布数据 - 发布的有效负载将包含实际的列表数据。再一次,CrudService 将没有数据模式的“知识”,因此需要配置列表(使用“itemsProperty”属性)以识别有效负载中包含表示列表的数据数组的属性渲染)。
GitHub 上的Aikau 教程介绍了创建使用列表和加载列表数据(来自各种来源)的页面的过程 - 如果您还没有完成该教程,我建议您完成。
也可以用数据初始化一个列表(通过“currentData”属性),这样您就不需要对数据发出 XHR 请求。