廢話不多說,之前寫小程序碰到了一個問題,如何在 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 繪制掛件頭像

