-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Labels
Description
问题描述
目前我们的模板结构为: [ 'templateString', [ values ]],即数组格式,数组第一项为带有特殊注释字符的字符串,标识节点的静态结构,第二项为数组,单项为注释字符的数据。
问题一:事件绑定与函数回调
[
'<!--?pwc_p--><custom-element>hello</custom-element>',
[{
name: 'onClick',
value: this.handleClick
}]
]以上结构目前我们认为其为绑定了一个 click 事件的节点:
<custom-element @click={{ this.handleClick }}>hello</custom-element>但实际上也可能是传给 custom-element 名为 onClick 的属性:
<custom-element onClick={{ this.handleClick }}>hello</custom-element>问题二:节点模板和数组类型属性传递
[
'<div><!--?pwc_t--></div>',
[{
name: 'child',
value: [ '<div>Child</div>', []]
} ]
]以上结构存在二义性:
get template() {
return html`<custom-element child=${html`<div>Child</div>`}></custom-element>`;
// 或
// return html`<custom-element child=${['<div>Child</div>', []]}></custom-element>`;
}模板标识
修改事件结构
将绑定事件和普通属性进行区分:
绑定事件的结构为: { name, handler }
普通属性的结构为:{ name, value }
修改模板结构
- 增加
template属性,表示当前对象是 pwc 接收的模板对象。 - 从数组改为对象,易于后期扩展
静态模板的键值:
TemplateString
数据的键值:
TemplateData
类型:
template: true