如何通过Capability API获取默认书签及识别其对应标识
Capability API获取默认书签标识方案
app.getList('BookmarkList')接口原生返回的书签列表确实不会直接携带默认书签的标记字段,你可以通过关联应用全局属性的方式实现判断,具体操作步骤如下:
- 调用
app.getAppProperties()接口读取应用全局配置,默认书签的ID会存储在返回结果的qDefaultBookmarkId字段中,这是Qlik官方约定的固定存储字段 - 拿到默认书签ID后,再调用
app.getList('BookmarkList')获取全量书签列表,遍历所有书签条目,将条目的qInfo.qId字段和默认书签ID做匹配,相等的即为默认书签 - 你可以在遍历过程中给书签对象新增自定义标记字段,比如
isDefault,方便后续业务逻辑直接调用
参考实现代码:
// 两步关联获取带默认标记的书签列表 let defaultBkmkId = '' // 第一步读取应用全局属性拿默认书签ID app.getAppProperties() .then(prop => { defaultBkmkId = prop.qDefaultBookmarkId || '' // 第二步拿全量书签列表 return app.getList('BookmarkList') }) .then(bkmkList => { const bookmarksWithDefaultFlag = bkmkList.qItems.map(bkmk => ({ ...bkmk, isDefault: bkmk.qInfo.qId === defaultBkmkId })) // 输出的bookmarksWithDefaultFlag已携带默认标识 console.log(bookmarksWithDefaultFlag) })
注意事项:
- 部分低版本Qlik Sense企业版中,
qDefaultBookmarkId可能嵌套在返回结果的qLayout属性下,读取时可以做兼容判断 - 若应用未配置过默认书签,
qDefaultBookmarkId会返回空值,代表当前应用无默认书签
内容的提问来源于stack exchange,提问作者Ryan Arpe
相关产品推荐
相关产品推荐

