收藏
评论

自定义组件发生Expect END descriptor...的坑!


今天打算把一个表格做成自定义组件,结果发现了一个大坑!!貌似官方文档上并没有对这里进行说明,所以希望能帮到遇到同样问题的同学。本人小白,技术能力不是很强,望说错的地方大神多多指点~


下面进入正题

-------------------------------------<华丽的分割线>----------------------------------------------


首先明确,我们在wxml中作条件判断的时候常用的是标签,所以循环表格组件的时候,我们是这样做的:

<block wx:if="{{goodDetail[attributeBoList].length > 0}}">
 <view class="table">
   <view class="tr">
     <block wx:key="testList-th" wx:for="{{goodDetail[attributeBoList]}}">
       <view class="th">{{item[attributeModel][displayName]}}view>
     block>
   view>
   <block wx:key="testList-tr" wx:for="{{goodDetail[attributeBoList][0][attributeValueModelList]}}" wx:for-index="index">
     <view class="tr">
       <block wx:key="testList-td" wx:for="{{goodDetail[attributeBoList]}}" wx:for-index="idx">
         <view class="td">{{item[attributeValueModelList][index][attributeVal]}}view>
       block>
     view>
   block>
 view>
 block>
<block wx:else>
 <text>此套餐还没有详细信息哦~text>
block>

那这时候我想把class="table"的那一段打成组件。所以,坑开始了。

按照正常的流程,各种数据传递,引用之类的全部操作完毕,组件wxml为:

<view class="table">
 <view class="tr">
   <block wx:key="testList-th" wx:for="{{goodDetail[attributeBoList]}}">
     <view class="th">
       {{item[attributeModel][displayName]}}
     view>
   block>
 view>
 <block wx:key="testList-tr" wx:for="{{goodDetail[attributeBoList][0][attributeValueModelList]}}" wx:for-index="index">
   <view class="tr">
     <block wx:key="testList-td" wx:for="{{goodDetail[attributeBoList]}}" wx:for-index="idx">
       <view class="td">
         {{item[attributeValueModelList][index][attributeVal]}}
       view>
     block>
   view>
 block>
view>

页面wxml为:

<block wx:if="{{goodDetail[attributeBoList].length > 0}}">

 

 <nstable goodDetail="{{goodDetail}}" attributeBoList="attributeBoList" attributeModel="attributeModel" displayName="displayName" attributeValueModelList="attributeValueModelList" attributeVal="attributeVal" tableTip="{{tableTip}}">nstable>
block>
<block wx:else>
 <text>此套餐还没有详细信息哦~text>
block>

结果我每次加载表格,都会报错: Expect END descriptor with depth 0 but get another


经过一次次排查,发现竟然是不能直接在block标签内引用自定义组件!


所以当我把block标签一起打入组件之后:

<block wx:if="{{goodDetail[attributeBoList].length > 0}}">
 <view class="table">
   <view class="tr">
     <block wx:key="testList-th" wx:for="{{goodDetail[attributeBoList]}}">
       <view class="th">
         {{item[attributeModel][displayName]}}
       view>
     block>
   view>
   <block wx:key="testList-tr" wx:for="{{goodDetail[attributeBoList][0][attributeValueModelList]}}" wx:for-index="index">
     <view class="tr">
       <block wx:key="testList-td" wx:for="{{goodDetail[attributeBoList]}}" wx:for-index="idx">
         <view class="td">
           {{item[attributeValueModelList][index][attributeVal]}}
         view>
       block>
     view>
   block>
 view>
block>
<block wx:else>
 <text>{{tableTip}}text>
block>

ok~~~~一切正常!所以这个坑给大家提个醒,希望能帮助大家解决这种问题,好了老板要过来查岗了,溜了溜了...

最后一次编辑于  2018-04-04
收藏

12 个评论

  • 失乐
    失乐
    2018-04-04

    并且我尝试过自定义组件没有任何数据的情况下,在block中引用也是报正文描述的错,希望是我写的有问题,官方减少点压力2333333

    2018-04-04
    赞同
    回复
  • 失乐
    失乐
    2018-04-04

    @LastLeaf

    this.data.test = '123';

    this.setData(this.data);

    这种方式算是直接赋值吗....

    2018-04-04
    赞同
    回复

正在加载...

登录 后发表内容