折腾:
【记录】小程序优化绘本查询细节的功能和逻辑
期间,需要去实现模拟web页面中的:
即:
一个tag的list,第一个特殊显示
然后就去想办法
期间以为需要用:
<view wx:if="{{length > 5}}"> 1 </view> <view wx:elif="{{length > 2}}"> 2 </view> <view wx:else> 3 </view>
结果发现:
此处没法去判断 特殊的highlightTag是否有值,然后去加上特殊的class去高亮
期间需要从list中删除掉一个元素:
【已解决】js中如何删除列表中元素
【总结】
最后考虑到:
当前显示的view可以for循环处理,放在当前根的view下面
所以可以把 高亮的 和 普通的拆分成两个列表,然后分别显示:
components/tags/tags.js
// components/tags/tags.js const app = getApp() //获取应用实例 const util = require('../../utils/util.js') const book_common = require('../../utils/book_common.js') Component({ /** * 组件的属性列表 */ properties: { bookDifficulty:{ // type: Number, // value: 0, type: String, value: "", }, inputTagList: { type: Array, value: [], observer: function (newTagList, oldTagList, changedPath) { console.log("inputTagList observer: newTagList=%o, oldTagList=%o, changedPath=%o", newTagList, oldTagList, changedPath) console.log("this.properties.highlightTag=%s", this.properties.highlightTag) if(newTagList){ var normalTagList = newTagList var highlightTagList = [] if (this.properties.highlightTag) { normalTagList = util.removeListItem(newTagList, this.properties.highlightTag) highlightTagList = [this.properties.highlightTag] } console.log("normalTagList=%o, highlightTagList=%o", normalTagList, highlightTagList) this.setData({ normalTagList: normalTagList, highlightTagList: highlightTagList, }) } } }, highlightTag: { type: String, value: "", } }, /** * 组件的初始数据 */ data: { highlightTagList: [], normalTagList: [], }, /** * 组件的方法列表 */ methods: { ... }, })
components/tags/tags.wxml
<!--components/book_list/book_list.wxml--> <view class='tag_list'> <view wx:for="{{highlightTagList}}" wx:for-index="highlightTagIdx" wx:for-item="eachHighlightTag" wx:key="*this" class='single_tag_normal highlight_tag' bindtap='tagClickCallback' data-tag="{{eachHighlightTag}}" data-difficulty="{{bookDifficulty}}" > {{eachHighlightTag}} </view> <view wx:for="{{normalTagList}}" wx:for-index="normalTagIdx" wx:for-item="eachNormalTag" wx:key="*this" class='single_tag_normal' bindtap='tagClickCallback' data-tag="{{eachNormalTag}}" data-difficulty="{{bookDifficulty}}" > {{eachNormalTag}} </view> </view>
效果:
转载请注明:在路上 » 【已解决】小程序中实现列表中第一个元素特殊显示