template 不响应 class、bingtap 等属性
发布于 6 年前 作者 na97 4365 次浏览 来自 问答

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


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


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

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

9 回复

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

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

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

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

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

代码编写如下:


<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>


非常感谢答复!

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

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

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

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

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

回到顶部