js无法通过setData()给标签属性赋值
Setting data field "srcPath" to undefined is invalid. 前端触发“打开本地视频”按钮,调用js中的bindOpenLocalVideos方法,改方法打开本地视频并返回本地视频路径,然后通过setDat()方法设置index.wxml中srcPath的值,但是运行时老报上述错误,请各位大神解答一下,谢谢。我正入门微信小程序开发。只copy了两个核心代码,其他代码我认为与改问题不相关,所以没有全部贴出来。 [代码]<!--index.wxml-->[代码][代码]<[代码][代码]view[代码] [代码]class[代码][代码]=[代码][代码]"section tc"[代码][代码]>[代码][代码] [代码][代码]<[代码][代码]video[代码] [代码]id[代码][代码]=[代码][代码]"myVideo"[代码] [代码]style[代码][代码]=[代码][代码]"height:{{videoHeight}}px;width:{{videoWidth}}px"[代码] [代码]src[代码][代码]=[代码][代码]"http://wxsnsdy.tc.qq.com/105/20210/snsdyvideodownload?filekey=30280201010421301f0201690402534804102ca905ce620b1241b726bc41dcff44e00204012882540400&bizid=1023&hy=SH&fileparam=302c020101042530230204136ffd93020457e3c4ff02024ef202031e8d7f02030f42400204045a320a0201000400"[代码] [代码]binderror[代码][代码]=[代码][代码]"videoErrorCallback"[代码] [代码]danmu-list[代码][代码]=[代码][代码]"{{danmuList}}"[代码] [代码]enable-danmu danmu-btn controls>[代码][代码] [代码][代码]</[代码][代码]video[代码][代码]>[代码][代码] [代码][代码]<[代码][代码]video[代码] [代码]src[代码][代码]=[代码][代码]"{{srcPath}}"[代码][代码]></[代码][代码]video[代码][代码]>[代码][代码] [代码][代码]<[代码][代码]view[代码] [代码]class[代码][代码]=[代码][代码]"btn-area"[代码][代码]>[代码][代码] [代码][代码]<[代码][代码]button[代码] [代码]style[代码][代码]=[代码][代码]"margin:10rpx;"[代码] [代码]bindtap[代码][代码]=[代码][代码]"bindOpenLocalVideos"[代码][代码]>打开本地视频</[代码][代码]button[代码][代码]>[代码][代码] [代码][代码]</[代码][代码]view[代码][代码]>[代码][代码] [代码][代码]<[代码][代码]view[代码] [代码]class[代码][代码]=[代码][代码]"btn-area"[代码][代码]>[代码][代码] [代码][代码]<[代码][代码]view[代码] [代码]class[代码][代码]=[代码][代码]"weui-cell weui-cell_input"[代码][代码]>[代码][代码] [代码][代码]<[代码][代码]view[代码] [代码]class[代码][代码]=[代码][代码]"weui-cell__bd"[代码][代码]>[代码][代码] [代码][代码]<[代码][代码]input[代码] [代码]class[代码][代码]=[代码][代码]"weui-input"[代码] [代码]placeholder[代码][代码]=[代码][代码]"请输入弹幕内容"[代码] [代码]bindblur[代码][代码]=[代码][代码]"bindInputBlur"[代码] [代码]/>[代码][代码] [代码][代码]</[代码][代码]view[代码][代码]>[代码][代码] [代码][代码]</[代码][代码]view[代码][代码]>[代码][代码] [代码][代码]<[代码][代码]button[代码] [代码]style[代码][代码]=[代码][代码]"margin:10rpx;"[代码] [代码]bindtap[代码][代码]=[代码][代码]"bindSendDanmu"[代码][代码]>发送弹幕</[代码][代码]button[代码][代码]>[代码][代码] [代码][代码]</[代码][代码]view[代码][代码]>[代码][代码]</[代码][代码]view[代码][代码]>[代码] [代码]<[代码][代码]view[代码] [代码]class[代码][代码]=[代码][代码]"weui-cells weui-cells_after-title"[代码][代码]>[代码][代码] [代码][代码]<[代码][代码]view[代码] [代码]class[代码][代码]=[代码][代码]"weui-cell weui-cell_switch"[代码][代码]>[代码][代码] [代码][代码]<[代码][代码]view[代码] [代码]class[代码][代码]=[代码][代码]"weui-cell__bd"[代码][代码]>随机颜色</[代码][代码]view[代码][代码]>[代码][代码] [代码][代码]<[代码][代码]view[代码] [代码]class[代码][代码]=[代码][代码]"weui-cell__ft"[代码][代码]>[代码][代码] [代码][代码]<[代码][代码]switch[代码] [代码]checked [代码][代码]bindchange[代码][代码]=[代码][代码]"switchChange"[代码] [代码]/>[代码][代码] [代码][代码]</[代码][代码]view[代码][代码]>[代码][代码] [代码][代码]</[代码][代码]view[代码][代码]>[代码][代码]</[代码][代码]view[代码][代码]>[代码][代码]<[代码][代码]view[代码] [代码]class[代码][代码]=[代码][代码]"colorstyle"[代码] [代码]bindtap[代码][代码]=[代码][代码]"selectColor"[代码][代码]>[代码][代码] [代码][代码]<[代码][代码]text[代码][代码]>选择颜色</[代码][代码]text[代码][代码]>[代码][代码] [代码][代码]<[代码][代码]view[代码] [代码]style[代码][代码]=[代码][代码]"height:80rpx;width:80rpx;line-height: 100rpx;margin:10rpx;background-color:{{numberColor}}"[代码][代码]>[代码][代码] [代码][代码]</[代码][代码]view[代码][代码]>[代码][代码]</[代码][代码]view[代码][代码]>[代码][代码]//index.js[代码][代码]function[代码] [代码]getRandomColor() {[代码][代码] [代码][代码]let rgb = [][代码][代码] [代码][代码]for[代码] [代码](let i = 0; i < 3; ++i) {[代码][代码] [代码][代码]let color = Math.floor(Math.random() * 256).toString(16)[代码][代码] [代码][代码]color = color.length == 1 ? [代码][代码]'0'[代码] [代码]+ color : color[代码][代码] [代码][代码]rgb.push(color)[代码][代码] [代码][代码]}[代码][代码] [代码][代码]return[代码] [代码]'#'[代码] [代码]+ rgb.join([代码][代码]''[代码][代码])[代码][代码]}[代码] [代码]Page({[代码][代码] [代码][代码]data: {[代码][代码] [代码][代码]srcPath: [代码][代码]null[代码][代码] [代码][代码]},[代码][代码] [代码][代码]onLoad: [代码][代码]function[代码] [代码]() {[代码][代码] [代码][代码]var[代码] [代码]_this = [代码][代码]this[代码][代码];[代码][代码] [代码][代码]//获取屏幕宽高 [代码][代码] [代码][代码]wx.getSystemInfo({[代码][代码] [代码][代码]success: [代码][代码]function[代码] [代码](res) {[代码][代码] [代码][代码]var[代码] [代码]windowWidth = res.windowWidth;[代码][代码] [代码][代码]//video标签认宽度300px、高度225px,设置宽高需要通过wxss设置width和height。[代码][代码] [代码][代码]var[代码] [代码]videoHeight = (225 / 300) * windowWidth[代码][代码]//屏幕高宽比 [代码][代码] [代码][代码]console.log([代码][代码]'videoWidth: '[代码] [代码]+ windowWidth)[代码][代码] [代码][代码]console.log([代码][代码]'videoHeight: '[代码] [代码]+ videoHeight)[代码][代码] [代码][代码]_this.setData({[代码][代码] [代码][代码]videoWidth: windowWidth,[代码][代码] [代码][代码]videoHeight: videoHeight[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码][代码] [代码][代码]},[代码][代码] [代码][代码]onReady: [代码][代码]function[代码] [代码](res) {[代码][代码] [代码][代码]this[代码][代码].videoContext = wx.createVideoContext([代码][代码]'myVideo'[代码][代码])[代码][代码] [代码][代码]},[代码][代码] [代码][代码]onShow: [代码][代码]function[代码] [代码]() {[代码][代码] [代码][代码]var[代码] [代码]_this = [代码][代码]this[代码][代码];[代码][代码] [代码][代码]//获取年数[代码][代码] [代码][代码]wx.getStorage({[代码][代码] [代码][代码]key: [代码][代码]'numberColor'[代码][代码],[代码][代码] [代码][代码]success: [代码][代码]function[代码] [代码](res) {[代码][代码] [代码][代码]console.log(res.data + [代码][代码]"numberColor----"[代码][代码])[代码][代码] [代码][代码]_this.setData({[代码][代码] [代码][代码]numberColor: res.data,[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码][代码] [代码][代码]},[代码][代码] [代码][代码]inputValue: [代码][代码]''[代码][代码],[代码][代码] [代码][代码]data: {[代码][代码] [代码][代码]isRandomColor: [代码][代码]true[代码][代码],[代码][代码]//默认随机[代码][代码] [代码][代码]src: [代码][代码]''[代码][代码],[代码][代码] [代码][代码]numberColor: [代码][代码]"#ff0000"[代码][代码],[代码][代码]//默认黑色[代码] [代码] [代码][代码]danmuList: [[代码][代码] [代码][代码]{[代码][代码] [代码][代码]text: [代码][代码]'第 1s 出现的红色弹幕'[代码][代码],[代码][代码] [代码][代码]color: [代码][代码]'#ff0000'[代码][代码],[代码][代码] [代码][代码]time: 1[代码][代码] [代码][代码]},[代码][代码] [代码][代码]{[代码][代码] [代码][代码]text: [代码][代码]'第 2s 出现的绿色弹幕'[代码][代码],[代码][代码] [代码][代码]color: [代码][代码]'#00ff00'[代码][代码],[代码][代码] [代码][代码]time: 2[代码][代码] [代码][代码]}[代码][代码] [代码][代码]][代码][代码] [代码][代码]},[代码][代码] [代码][代码]bindInputBlur: [代码][代码]function[代码] [代码](e) {[代码][代码] [代码][代码]this[代码][代码].inputValue = e.detail.value;[代码][代码] [代码][代码]},[代码][代码] [代码][代码]bindSendDanmu: [代码][代码]function[代码] [代码]() {[代码][代码] [代码][代码]if[代码] [代码]([代码][代码]this[代码][代码].data.isRandomColor) {[代码][代码] [代码][代码]var[代码] [代码]color = getRandomColor();[代码][代码] [代码][代码]} [代码][代码]else[代码] [代码]{[代码][代码] [代码][代码]var[代码] [代码]color = [代码][代码]this[代码][代码].data.numberColor;[代码][代码] [代码][代码]}[代码] [代码] [代码][代码]this[代码][代码].videoContext.sendDanmu({[代码][代码] [代码][代码]text: [代码][代码]this[代码][代码].inputValue,[代码][代码] [代码][代码]color: color[代码][代码] [代码][代码]})[代码][代码] [代码][代码]},[代码] [代码] [代码][代码]bindOpenLocalVideos: [代码][代码]function[代码] [代码]() {[代码][代码] [代码][代码]var[代码] [代码]_this = [代码][代码]this[代码][代码] [代码][代码]wx.chooseVideo({[代码][代码] [代码][代码]sourceType: [[代码][代码]'album'[代码][代码], [代码][代码]'camera'[代码][代码]],[代码][代码] [代码][代码]maxDuration: 600,[代码][代码] [代码][代码]camera: [代码][代码]'back'[代码][代码],[代码][代码] [代码][代码]success: [代码][代码]function[代码] [代码](res) {[代码][代码] [代码][代码]console.log(res.tempFilePath);[代码][代码] [代码][代码]_this.setData({[代码][代码] [代码][代码]srcPath:res.tempFilepath[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}[代码] [代码] [代码][代码]})[代码][代码] [代码][代码]},[代码][代码] [代码][代码]videoErrorCallback: [代码][代码]function[代码] [代码](e) {[代码][代码] [代码][代码]console.log([代码][代码]'视频错误信息:'[代码][代码])[代码][代码] [代码][代码]console.log(e.detail.errMsg)[代码][代码] [代码][代码]},[代码][代码] [代码][代码]//选择颜色页面[代码][代码] [代码][代码]selectColor: [代码][代码]function[代码] [代码]() {[代码][代码] [代码][代码]wx.navigateTo({[代码][代码] [代码][代码]url: [代码][代码]'../selectColor/selectColor'[代码][代码],[代码][代码] [代码][代码]success: [代码][代码]function[代码] [代码](res) {[代码][代码] [代码][代码]// success[代码][代码] [代码][代码]},[代码][代码] [代码][代码]fail: [代码][代码]function[代码] [代码]() {[代码][代码] [代码][代码]// fail[代码][代码] [代码][代码]},[代码][代码] [代码][代码]complete: [代码][代码]function[代码] [代码]() {[代码][代码] [代码][代码]// complete[代码][代码] [代码][代码]}[代码][代码] [代码][代码]})[代码][代码] [代码][代码]},[代码][代码] [代码][代码]//switch是否选中[代码][代码] [代码][代码]switchChange: [代码][代码]function[代码] [代码](e) {[代码][代码] [代码][代码]this[代码][代码].setData({[代码][代码] [代码][代码]isRandomColor: e.detail.value[代码][代码] [代码][代码]})[代码][代码] [代码][代码]}[代码][代码]})[代码]