<v-template>
组件允许您定义可重复使用的模板标记。
名称 | 类型 | 描述 |
---|---|---|
if | 字符串 | 使用此模板的条件。 |
name | 字符串 | 模板的名称,如果省略则自动生成。 |
<v-template>
组件在内部由 ListView 组件 用于迭代其列表项。
您可以使用 v-template
实现需要模板或多个模板的自定义组件。
v-template
在模板中放置时不会渲染任何内容。 相反,它会向父元素添加一个 $templates
属性。 此 $templates
属性是一个 TemplateBag
实例。
接下来,v-template
将自己注册为父元素相应 TemplateBag
实例中的可用模板。 父元素上任何现有的 TemplateBag
实例都将被重用。
TemplateBag
类TemplateBag
类允许您注册多个模板,并根据项目和为每个模板提供的条件选择正确的模板。
模板存储为符合 KeyedTemplate
接口的对象。
selectorFn
属性selectorFn
属性返回一个接受单个参数的函数。 此参数是要选择其模板的项目。
单参数函数遍历 TemplateBag
实例中注册的所有模板,并返回第一个满足 if
条件的模板。 如果没有模板匹配,则返回 default
。
方法 | 描述 |
---|---|
registerTemplate(name: String, condition: String?, scopedFn: Function): void | 主要用于内部。 在 TemplateBag 实例中注册模板。scopedFn 应该是一个 作用域插槽 的渲染函数 |
getConditionFn(condition: String): Function | 用于内部。 构建一个评估给定条件的函数。 |
getAvailable(): Array<String> | 返回一个可用 KeyedTemplates 的数组。 (返回一个模板名称数组。) |
getKeyedTemplate(name: String): KeyedTemplate | 返回具有指定名称的 KeyedTemplate 。 |
getKeyedTemplates(): Array<KeyedTemplate> | 返回 TemplateBag 中注册的所有 KeyedTemplates 的数组。 |
patchTemplate(name: String, context: any, oldVnode: VNode?): View | 使用提供的 context 修补现有的 VNode 。 如果没有提供 oldVnode ,则为指定模板创建新的 View 实例。 |