廢話不多說,之前寫小程式碰到了一個問題,如何在 wxml 頁面中截取數據? 1、wxs 取數據想必大家都會,不就是 substring 嗎?但是這種方法在 wxml 頁面中是無效的。 那還有 css 啊,不一樣可以做到嗎?但是個人覺得 css 復用性太差,暫不考慮。 實在不行就用 js 唄,在獲取到 ...
廢話不多說,之前寫小程式碰到了一個問題,如何在 wxml 頁面中截取數據?
1、wxs
取數據想必大家都會,不就是 substring 嗎?但是這種方法在 wxml 頁面中是無效的。
那還有 css 啊,不一樣可以做到嗎?但是個人覺得 css 復用性太差,暫不考慮。
實在不行就用 js 唄,在獲取到數據後就對數據進行截取。
這樣好像可以,但數據一多稍微有點複雜,而且一般獲取的數據可能會在多個頁面進行展示,而如果想在不同的頁面中顯示不同長度的數據,這似乎又是個新問題。
這時你就需要用到 wxs 了,官方介紹是:「WXS(WeiXin Script)是小程式的一套腳本語言,結合 WXML,可以構建出頁面的結構」,沒聽過的可以去看一下官方文檔說明。
2、wxs 怎麼用
// page.js Page({ data: { array: [1, 2, 3, 4, 5, 1, 2, 3, 4] } }) // page.wxml <wxs module="m1"> var getMax = function(array) { var max = undefined; for (var i = 0; i < array.length; ++i) { max = max === undefined ? array[i] : (max >= array[i] ? max : array[i]); } return max; } module.exports.getMax = getMax; </wxs> <view> {{ m1.getMax(array) }} </view> 輸出:5
這是一個官方的案例,wxs 可以直接寫在 wxml 頁面中,但是為了達到復用的效果,推薦單獨建成文件調用。
我是這麼寫的,新建一個 app.wxs 文件,就像寫普通的 js 方法差不多,寫完之後用 module.exports 暴露,等待調用。
// app.wxs var substring = function (text, textLength) { if (text.length == 0 || text == undefined) { return; } else if (text.length > textLength) { return text.substring(0, textLength) + '...'; } else { return text; } } module.exports = { substring: substring }
然後在 wxml 文件中進行引用使用。
// page.wxml 部分代碼 <!-- 引入 app.wxs 腳本 --> <wxs src="../../../../utils/app.wxs" module="tools" /> <view>標題:{{ tools.substring(title, 10) }}</view>
這樣就能自由地在各個頁面中顯示不同的字元串長度了。
3、舉一反三
當然,如果想對時間的顯示樣式進行處理,一樣可以在 wxs 文件中編寫對應的函數方法進行調用處理。
總之 wxs 就相當於有了和 js 類似的能力,如果還有其他的小技巧,歡迎留言討論,分享、討論才是更好的學習方式。
推薦閱讀
如何製作國旗頭像 | 小程式七十二變之 canvas 繪製掛件頭像