微信小程序在模板语法中使用indexOf无效问题解决办法及 wxml 中引入.wxs的使用方法

大兔子大兔子 提交于 2020-03-07 02:53:51

失效原因

小程序的mastache语法不支持js的方法。
即在页面标签中,使用以下js方法无效:

	Object.keys()   
	toString()  
	indexOf()

解决办法-wxs:

WXS(WeiXin Script)是小程序的一套脚本语言,结合 WXML,可以构建出页面的结构。

wxs可以说就是为了满足能在页面中使用js存在的,在wxml页面中,只能在插值{{ }}中写简单的js表达式,而不能调用方法,例如想取出一个字符串的最后一位,就不能调用slice()方法。

通常的解决办法是在page的data对象中先把这个字符串截取好赋给某个变量,然后在页面中使用这个变量,但是问题又来了,如果变量多了呢,是不是要定义很多次。

在html中引入像artTemplate这样的模板后,在页面中只要在界限符内就能使用任何js语法,而不仅仅只是显示出表达式。

相对来说wxml中使用js语法就比较薄弱了,wxs就是弥补了这样的短处。

使用方法

①写好wxs文件 然后导出要使用的方法或变量

②在待使用页面 使用引入

③在插值{{}}中使用tools.名字(参数)

示例如下

// .wxs文件

function indexOf(arr, va l) {
    if (arr.indexOf(val) < 0) {
        return false;
    } else {
        return true;
    }
}
module.exports.indexOf = indexOf;

// 引入
<wxs src="../../utils/util.wxs" module="tools" />

// 使用
<view>{{tools.indexOf([1, 2, 3, 6, 9], 6) ? '包含' : '不包含'}}</view>
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!