template 不响应 class、bingtap 等属性

发布于 7 年前作者 na974501 次浏览最后编辑 7 年前来自 ask

在使用 template 的过程中,习惯性的


<template bindtap="clickHandle" data-ev="233" data="{{ ...data }}" is="card" wx:if="{{data}}" class="card-item"></template>


期望可以像使用其他框架一样,把 class 和 事件 过继到子模版的根上,但是,结果这些属性定义却被遗弃了。通过 wxml panle 也查看不到相关的节点。

这个是基础功能啊,不会这个也还没做支持吧???

9 回复
jiehe
jiehe1 楼6 年前

在template外面多包一个view节点,不可接受吗?

guiyingqiu
guiyingqiu2 楼6 年前

不要带入vue的思维,毕竟差别是比较大的,以后还会越来越大。

xieping
xieping3 楼6 年前

我的意思是,合并后子模版是没有根节点的。

tangchao
tangchao4 楼6 年前

那样也是可以解决,但 vue 的开发习惯不是那样的。。。

yyang
yyang5 楼6 年前

这里的<template>不会对应生成一个真正的节点的,所以bindtap之类的当然不会有效。

yangzheng
yangzheng6 楼6 年前

代码编写如下:


<template name="card">

  // 第一个顶级节点
  <view class="card-header">
    // ...
  </view>
 
  // 第二个顶级节点
  <view class="card-body">
    // ...
  </view>
 
  // 第二个顶级节点
  <view class="card-footer">
    // ...
  </view>

</template>


<template is="card" bindtap="clickHandle" data-ev="233" data="{{ ...data }}" is="card" wx:if="{{data}}" class="card-item"></template>


希望编译出的的结果是:


// 若干节点、父节点啥的 ...

// 第一个顶级节点, bindtap 事件和 class 继承合并自调用处
<view class="card-header item-card" bindtap="clickHandle" data-ev="233" >
  // ...
</view>
 
// 第二个顶级节点, bindtap 事件和 class 继承合并自调用处
<view class="card-body item-card" bindtap="clickHandle" data-ev="233" >
  // ...
</view>
 
// 第二个顶级节点, bindtap 事件和 class 继承合并自调用处
<view class="card-footer item-card" bindtap="clickHandle" data-ev="233" >
  // ...

</view>


leilin
leilin7 楼6 年前

非常感谢答复!

我明白了,因为在申明 template 子模版的时候可以写多个顶级节点。

1、是否可以同时合并到那多个子模版的顶级节点?

2、如果我只写了一个顶级节点,能不能当作为根节点,然后做合并操作?

yuping
yuping8 楼6 年前

抱歉,没看明白你的意思。举例子说明一下?

zhengxiulan
zhengxiulan9 楼5 年前

为啥不在渲染的时候把那些属性合并到子模版的根节点上呢?