小程序
小游戏
企业微信
微信支付
扫描小程序码分享
nodeId是什么?大神求助啊
9 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
自定义组件中的定时器要在detached周期内清除
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
页面里面有定时器,切换页面的时候,要在钩子函数销毁阶段,关闭定时器;
如果是调用了接口,要在钩子函数销毁阶段,调用 abort 方法
我在onHide和onUnload使用了clearTimerout(),还是会报错,所以楼主解决这个问题了吗?
这个问题其实没解决,好像是一个页面被销毁后还有代码在执行就会报错
我也碰到这种错误;
分析原因是:
上一个page的代码还没执行完,就使用wx.reLaunch跳到了另外一个页面;就会报 ‘nodeId’ of undefined
<view class="example">
<view class="marquee_box">
<view class="marquee_content" style="{{orientation}}:{{marqueeDistance}}rpx;font-size: {{size}}rpx;">
{{content}}
</view>
Component({
/**
* 组件的属性列表
*/
properties: {
marqueeList: {
type: Array,
value: null,
observer: function (newVal) {
if (newVal instanceof Array && newVal.length > 0) {
this.initMarquee()
}
},
orientation: {
type: String,
value: 'left'
size: {
type: Number,
value: 28
* 组件的初始数据
data: {
content: '',
// content: '这是一条会滚动的文字滚来滚去的文字跑马灯,哈哈哈哈哈哈哈哈',
marqueePace: 2,//滚动速度
// marqueeDistance: 750,//初始滚动距离
interval: 20,// 时间间隔
count: 0
* 组件的方法列表
methods: {
run1: function () {
var that = this;
var timeout = setTimeout(function () {
if (that.data.marqueeDistance > -that.data.length) {//记住是right从0开始
that.setData({
marqueeDistance: that.data.marqueeDistance - that.data.marqueePace,
});
// that.data.marqueeDistance == 750 - (that.data.length - that.data.length % that.data.marqueePace)
if (that.data.marqueeDistance == 750 % that.data.marqueePace + 2 * that.data.marqueePace) {
setTimeout(function () {
that.run1();
}, that.data.marqueeList[that.data.count].showTime * 1000)
} else {
//一个回合结束,更新count
var count = that.data.count;
if (++count > that.data.marqueeList.length - 1) {
count = 0
count: count
})
that.initMarquee()
}, that.data.interval);
initMarquee: function () {
var marqueeData = that.data.marqueeList[that.data.count]
length: marqueeData.content.length * that.data.size,
marqueeDistance: 750,
content: marqueeData.content,
marqueePace: 750 * that.data.interval / 1000 / marqueeData.moveTime
that.run1();// 水平一行字滚动完了再按照原来的方向滚动
这个nodeId代码里面没有,应该是引入自定义后发生的问题
你要贴代码啊,光贴报错谁知道
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
自定义组件中的定时器要在detached周期内清除
页面里面有定时器,切换页面的时候,要在钩子函数销毁阶段,关闭定时器;
如果是调用了接口,要在钩子函数销毁阶段,调用 abort 方法
我在onHide和onUnload使用了clearTimerout(),还是会报错,所以楼主解决这个问题了吗?
这个问题其实没解决,好像是一个页面被销毁后还有代码在执行就会报错
我也碰到这种错误;
分析原因是:
上一个page的代码还没执行完,就使用wx.reLaunch跳到了另外一个页面;就会报 ‘nodeId’ of undefined
<view class="example">
<view class="marquee_box">
<view class="marquee_content" style="{{orientation}}:{{marqueeDistance}}rpx;font-size: {{size}}rpx;">
{{content}}
</view>
</view>
</view>
Component({
/**
* 组件的属性列表
*/
properties: {
marqueeList: {
type: Array,
value: null,
observer: function (newVal) {
if (newVal instanceof Array && newVal.length > 0) {
this.initMarquee()
}
}
},
orientation: {
type: String,
value: 'left'
},
size: {
type: Number,
value: 28
}
},
/**
* 组件的初始数据
*/
data: {
content: '',
// content: '这是一条会滚动的文字滚来滚去的文字跑马灯,哈哈哈哈哈哈哈哈',
marqueePace: 2,//滚动速度
// marqueeDistance: 750,//初始滚动距离
interval: 20,// 时间间隔
count: 0
},
/**
* 组件的方法列表
*/
methods: {
run1: function () {
var that = this;
var timeout = setTimeout(function () {
if (that.data.marqueeDistance > -that.data.length) {//记住是right从0开始
that.setData({
marqueeDistance: that.data.marqueeDistance - that.data.marqueePace,
});
// that.data.marqueeDistance == 750 - (that.data.length - that.data.length % that.data.marqueePace)
if (that.data.marqueeDistance == 750 % that.data.marqueePace + 2 * that.data.marqueePace) {
setTimeout(function () {
that.run1();
}, that.data.marqueeList[that.data.count].showTime * 1000)
} else {
that.run1();
}
} else {
//一个回合结束,更新count
var count = that.data.count;
if (++count > that.data.marqueeList.length - 1) {
count = 0
}
that.setData({
count: count
})
that.initMarquee()
}
}, that.data.interval);
},
initMarquee: function () {
var that = this;
var marqueeData = that.data.marqueeList[that.data.count]
that.setData({
length: marqueeData.content.length * that.data.size,
marqueeDistance: 750,
content: marqueeData.content,
marqueePace: 750 * that.data.interval / 1000 / marqueeData.moveTime
});
that.run1();// 水平一行字滚动完了再按照原来的方向滚动
}
}
})
这个nodeId代码里面没有,应该是引入自定义后发生的问题
你要贴代码啊,光贴报错谁知道