百度小程序坑坑坑
时间:2019-06-13 13:46:15
收藏:0
阅读:153
吐槽:被小程序坑死啊
问题:在循环中,根据条件加载不同的template模板出现问题。
<block s-for="news, index in item.news_data"> <!--begin template is 中第一次比较,满足就会出现问题 --> <block s-if="item.type==1"> <template is="newsText" data="{{{...item}}}"></template> </block> <block s-elif="item.type==2"> <block s-if="item.datu==1"> <template is="newsBigImg" data="{{{...item}}}"></template> </block> <block s-else> <template is="newsTags" data="{{{...item}}}"></template> </block> </block> <block s-else> <template is="newsImgs" data="{{{...item}}}"></template> </block> <!--end template is 中第一次比较,满足就会出现问题--> <!-- 原始写法 --> <!-- <template is="{{news.type==1?‘newsText‘:(news.type==2?(news.datu==1?‘newsBigImg‘:‘newsTags‘):‘newsImgs‘)}}" data="{{{...news}}}"></template> --> </block>
问题刚出现的时候,是一个明明只id为xxxx的只有一条,可是页面却出现了多条,以为是s-for的问题就一直在这纠结,然后就百度,就那么几条:1:s-for和s-if 不能用到一个元素(不是这个问题),2:后端加载数据是对象而不是数组需要替换,3:什么不能识别常量问题(什么鬼哦)。然后就查看数据有啥不同,发现该条数据是文本显示而不是带图的文本显示,查看代码没问题;
然后就
怀疑1:是不是{{}}里面不能使用三元运算,发现不是;
怀疑2:是不是s-for 里面不支持 三元运算,也不是;
怀疑3: template is 中不支持 三元运算 ,不完全是。
template中的is 支持三元运算,但是就第一次比较的时候,如果满足,就会出现问题。(找了很久,巨坑啊)
评论(0)