html模板中绑定数据,HTML DOM模板:data- *与用于绑定数据的闭包

在模板化HTML时,我遇到了两种处理事件的方法,并且我没有直觉来确定哪种方法更好。

背景

我正在使用lit-html,但是同样的问题也适用于在JS中对DOM进行模板化的其他方法-思考,角度,反应。

Lit-html使用标记的模板文字字符串,允许使用这种语法

const inner = html`some text`;

const example = html`

${inner}

`;

创建此DOM

some text

使用lit-html,我可以使用在标记中绑定事件处理程序。

我还可以遍历可迭代对象以构建一堆DOM:

const items = [1, 2, 3, 4, 5];

const template = html`

${items.map(item => html`

${item}
`)}

`;

// Result

/*

1
2
3
4
5
*/

前言

现在说我想将事件处理程序绑定到映射“循环”中创建的元素。

我可以看到两种方法。

const items = [1, 2, 3, 4, 5];

const template = html`

${items.map(item => html`

${item}

`)}

`;

或类似...

const clickHandler = (e) => console.log(e.toElement.dataset['item']);

const items = [1, 2, 3, 4, 5];

const template = html`

${items.map(item => html`

data-item="${item}"

on-click="${clickHandler}"

>

${item}

`)}

`;

问题

以上两种方法中哪一种是更好的选择?出于任何原因进行回答-例如安全/数据丢失或性能不同等方面的相关风险。

我倾向于做第一种风格。之所以称其为闭包绑定,是因为我为每个元素都创建了新的匿名函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值