Skip to content

[Enhance] 修改事件字符并增加模板标识 #59

@cryzzchen

Description

@cryzzchen

问题描述

目前我们的模板结构为: [ '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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions