微信小程序 wxml 文件中如何讓多餘文本省略號顯示?

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章