【wxml bug】模板语法bug反馈
发布于 6 年前 作者 jun63 3805 次浏览 来自 问答
  • 当前 Bug 的表现(可附上截图)

使用自定义组件的时候,有时候需要将一个JS对象作为参数传递,会出现这样的使用方法:

第一种写法:

<comp1 obj="{{{a: 1, b: 2}}}"></comp1>

最外的两层花括号表明这是一个表达式,表达式的值是{a: 1, b: 2},但是这种写法在开发者工具上直接报错了。

第二种写法:

<comp1 obj="{{a: 1, b: 2}}"></comp1>

这是参考template的写法,只有两层花括号,但是也报错了。

第三种写法:

<comp1 obj="{{ {a: 1, b: 2} }}"></comp1>

这时候就能正常显示了,但这个和第一种写法有什么区别?我不认为加减一个空格会影响到表达式的表现才对。

同时,文档里template有一种写法:

<template is="objectCombine" data="{{...obj1, ...obj2, e: 5}}"></template>

<template is="objectCombine" data="{{foo, bar}}"></template>

这种写法我认为是不是也有问题?两个花括号表示这是一个表达式的话,js里没有这样的表达式吧?…obj1, …obj2, e: 5?foo, bar?这能是一个对象吗

文档里还有另一种写法:

<view wx:for="{{[zero, 1, 2, 3, 4]}}">{{item}}</view>

这个为什么就能正常了?这和第一种写法有什么区别?能在模板语法里构造数组,不能构造对象?

  • 预期表现

这些表现我认为是冲突的,没有统一性。麻烦解答一下上面的问题哈

4 回复

我觉得没毛病诶,component的值是根据properties配置传入的,跟template的值传入是有区别的,还有wx:for那里是循环,传入个数组没问题吧???

如果组件要传入对象,在data里面定义一个初始值传进去就好了

<comp1 obj="{{test}}" />

Page({

    data: {

        test: {

                a: 1,

                b: 2

            }

    }

})

我不认为这是BUG

这是一个已知问题,我们会尽快进行修复。

还有,在wxml里,特殊字符没有一个转义的方式?比如我要显示一个小于号,只能写"{{’<’}}",不太方便吧

回到顶部