SPZServices 对象

SPZServices 对象挂载在 window 上,可以在全局中使用。该对象定义了注册方法、模板等服务。

获取 Action 服务

在定义组件时,如果有要抛出的事件,就需要通过 Action 服务的 trigger 方法来实现。

属性说明类型
trigger触发目标元素指定的事件(target, eventType, event, opt_args) => boolean
this.actions_ = SPZServices.actionServiceForDoc(); // 获取服务

const event = SPZUtils.Event.create(
  this.win,
  'spz-render.finish',
  {}
);

this.actions_.trigger(this.element, 'finish', event);

获取 Template 服务

当定义组件需要用到模板时,需要该服务来查找、渲染模板。

属性说明类型
renderTemplate使用提供的数据渲染模板,并返回渲染结果(templateElement, data) => Promise<Element>
renderTemplateArray使用提供的数据数组渲染指定的模板元素,并返回结果元素的数组(templateElement, data) => Promise<Array<Element>>
findAndRenderTemplate查找并使用提供的数据渲染模板,并返回渲染结果(parentElement, data) => Promise<Element>
findAndRenderTemplateArray查找并使用提供的数据数组渲染指定的模板元素,并返回结果元素的数组(parentElement, data) => Promise<Array<Element>>
findTemplate查找模板(parentElement, opt_querySelector) => Element
this.templates_ = SPZServices.templatesForDoc(); // 获取服务
this.templates_.findAndRenderTemplate(this.element, data).then((el) => {
  // ...
});

获取 XHR 服务

需要请求接口数据时,可以使用 XHR 服务来请求。

属性说明类型
fetchJson请求接口,返回 JSON 类型数据格式。opt_init 可选项,包括所有对请求的设置,参考 fetch(input, opt_init) => Object | Array
fetchText请求接口,返回文本类型(text/plain)数据格式。opt_init 可选项,包括所有对请求的设置,参考 fetch(input, opt_init) => string
this.xhr_ = SPZServices.xhrFor(this.win); // 获取服务
this.xhr_.fetchJson('/api/cart').then((data) => {
  // ...
});

获取 BatchedXHR 服务

需要请求接口数据且可以通过给定元素的 items 来获取返回的数据路径时,可以使用 BatchedXHR 服务来请求。

属性说明类型
batchFetchJsonFor获取元素的 src 属性作为默认的请求URL(如果没有传递 url 参数时使用)。当请求成功后,通过元素的 items(默认为 .)属性来从结果数据中获取指定路径的数据返回(element, options) => any
this.batchedXhrFor_ = SPZServices.batchedXhrFor(this.win); // 获取服务
this.batchedXhrFor_.fetchJson(this.element, {
  url: '...',
  method: 'POST'
}).then((data) => {
  // ...
});

获取 Viewport 服务

该对象表示视口。它跟踪滚动位置、调整大小和其他事件,并在视口发生变化以及如何变化时通知感兴趣的各方。

属性说明类型
onResize文档视口大小调整时触发(handler) => removeHandlerFunc
removeResize移除 onResize 的监听(handler) => void
onScroll文档视口滚动时触发(handler) => removeHandlerFunc
getScrollTop获取 scrollTop() => number
getSize获取视口的 widthheight 对象() => Object
getWidth获取视口的宽度() => number
getHeight获取视口的高度() => number
enterOverlayMode进入蒙层模式,禁止页面底部滚动(element) => void
leaveOverlayMode离开蒙层模式,允许页面底部滚动(element) => void
this.viewport_ = this.getViewport(); // 获取服务

AI 使用建议(LLM Ready)

  • 章节密度:检测到 5 个二级标题。
  • 示例密度:检测到 5 个代码块。
  • 先读结论:优先提取本页“定义、约束、边界条件”。
  • 再读证据:根据代码示例确认可执行写法,不直接依赖自然语言段落。
  • 最后联动:涉及组件时同步查看对应组件页,避免文档与实现偏差。