问题描述
目前我们的模板结构为: [ '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
问题描述
目前我们的模板结构为:
[ 'templateString', [ values ]],即数组格式,数组第一项为带有特殊注释字符的字符串,标识节点的静态结构,第二项为数组,单项为注释字符的数据。问题一:事件绑定与函数回调
以上结构目前我们认为其为绑定了一个
click事件的节点:但实际上也可能是传给
custom-element名为onClick的属性:问题二:节点模板和数组类型属性传递
以上结构存在二义性:
模板标识
修改事件结构
将绑定事件和普通属性进行区分:
绑定事件的结构为: { name, handler }
普通属性的结构为:{ name, value }
修改模板结构
template属性,表示当前对象是 pwc 接收的模板对象。静态模板的键值:
TemplateString
数据的键值:
TemplateData
类型:
template: true