我正在使用 Ubuntu SDK。目前,我正在尝试创建 Unity 8 Scope。目前,我遇到以下问题:
- 如何将类别添加到范围(结果上方的选择列表,请参阅亚马逊范围)
不幸的是我没有在开发者文档中找到任何有用的信息。
答案1
结果上方的下拉菜单是部门选择器。类别是范围结果中的不同项目组,这就是为什么您可能无法找到正确的 API。
要将部门添加到您的范围,您应该调用register_departments
在查询类run
方法中的回复对象上。这将采用一个unity::scopes::Department::SCPtr
对象来表示此特定结果集可见的部门集:
如果用户当前正在浏览顶级部门,您应该传递一个
Department
代表顶级的部门,并填写其直属子部门。如果用户正在浏览子部门,您应该传递
Department
代表父级的部门,并填写其直属子级。当前部门必须出现在子级中。
这个想法是,只提供部门树中需要立即导航的部分。您的代码可能看起来像这样:
Department::SPtr parent = Department::create("parent", query(), "Parent Dept")
parent->set_subdepartments({
Department::create("sibling", query(), "Sibling department"),
Department::create("current", query(), "Current departmnet")});
reply->register_departments(parent);
现在您需要做的就是让您的范围提供与用户选择的部门相关的结果。这在您的查询类中可用,如下所示query().department_id()
。这将与您之前注册的某个部门的 ID 相匹配,或者""
应将其视为顶级部门。