如下图,我是用的组件是vant weapp.然后遇到问题就是无法把这个src的URL弄出来
<van-grid column-num="2" gutter="{{ 20 }}">
<van-grid-item wx:for="{{ fileList }}" wx:key="name" use-slot>
<view>
<image style="width: 100%; height: 90px;" src="{{ getFileIcon(item.name) }}" />
<text>{{ item.name }}</text>
</view>
</van-grid-item>
</van-grid>
上面是wxml代码.亲测把那个 src="{{ getFileIcon(item.name) }}" 改成正确的URL可以请求到图片
下面是JS代码
import {HOST} from '../../utils/http'
Page({
data:{
HOST:HOST,
fileList: [
{ name: 'img.png' },
{ name: 'okk.zip' }
]
},
getFileIcon(fileName) {
console.log("执行了一次")
const HOST = this.data.HOST; // 获取主机地址
const extension = fileName.split('.').pop().toLowerCase();
let icon = '';
switch (extension) {
case 'zip':
icon = HOST + 'fileType/zip.png';
break;
case 'mp4':
icon = HOST + 'fileType/video.png';
break;
case 'jpg':
case 'jpeg':
case 'png':
icon = HOST + 'fileType/img.png';
break;
case 'doc':
case 'docx':
icon = HOST + 'fileType/word.png';
break;
case 'xlsx':
icon = HOST + 'fileType/excel.png';
break;
case 'pdf':
icon = HOST + 'fileType/pdf.png';
break;
case 'mp3':
icon = HOST + 'fileType/sound.png';
break;
default:
icon = HOST + 'fileType/project.png'; // 默认情况下返回一个通用图标路径
break;
}
return icon;
}
})
上面的HOST是正确的主机地址,也就是说,其实 HOST + 'fileType/project.png' 这些都是正确的URL,但是这个 src="{{ getFileIcon(item.name) }}" 不知为何就是渲染不出来这个URL.
(嗷对了还有,编译一次页面之后, console.log("执行了一次") 压根儿就没有执行过)
wxml中不能直接调用js的方法,需要你写个wxs,然后在wxs中执行实现你的js方法,再在wxms中引入你的wxs文件,就可以在wxml中调用wxs的js方法了
哈哈,请参考 wxs 写法:
https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxs/
wxml里面,不能直接调用js里面的方法,你这个写法就说错误的,你这种,要用wxs
src="{{ getFileIcon(item.name) }}" 此属性的函数改成 js 中去循环 fileList 调用 getFileIcon 重新赋值新变量 url,wxm 中直接调用变量 url。