廢話不多說,之前寫小程序碰到了一個問題,如何在 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 類似的能力,如果還有其他的小技巧,歡迎留言討論,分享、討論纔是更好的學習方式。
推薦閱讀