Uni-app发展道路上的这个指向性问题

APP开发


浏览:861 次

问题的发生

今天调试和开发uniapp小程序时出现了一个问题,即方法下的pullDown方法和pullUp方法无法在相同的方法下调用方法loadData,并且在编译到小程序的控制台时报告错误TypeError:此loadData不是函数。输出结果如下:

错误报告屏幕截图

源代码如下:

布局代码

源代码

方法{}下的方法相同。你不能通过调用这个找到方法吗?第二个和尚很困惑,我也很困惑。我不明白为什么。

此外,H5在开发过程中是正常的,但在运行小程序时会出现此问题。

接下来,我搜索了几个uni-app项目,发现它们的项目也可以通过。以function()的形式调用方法没有问题。做出初步判断,以消除其自身的语法或写作问题。

因为我的代码也在onLoad中执行此操作。loadData()方法在onLoad方法中被成功调用,但在methods方法中失败,这表明该方法不存在,所以问题可能在这个方向上。

onLoad(选项){

this.loadData();

}

onLoad方法可以正确加载数据

通过这个的日志打印,这个。loadData,发现在当前方法下定义的方法在以下实例中不存在:

打印日志

打印结果

Vue实例

解决问题

因为您知道在onLoad对象下这是正确的,所以使用一个全局变量来初始化并将其保存到onLoad中,然后在pullUp方法中使用这个全局变量来调用。

在导出默认{}代码块之前的脚本开头初始化变量

//<脚本>

设th=空;

//导出默认值{

在onLoad中初始化

上传(){

th=这;

this.loadData();

}

修改pullUp方法,并将其更改为

上拉(vm){

第++页;

加载数据();

}

最后,pullUp方法调用此。加载();最后,它得以正常实施。

成功onLoad执行后的输出

后记

我在pullUp(vm)中打印了that、this和vm的三个实例_uid确认了这个和那个在这个方法中的方向确实不同:

上拉(vm){

安慰log(“那”,那);

安慰日志('vm',vm);

安慰日志(“此”,this);

第++页;

加载数据();

}

那个,这个,vm

vm很容易理解。事实上,vm是刷新和加载的控件,也是当前页面的vue实例。至于这一点,在搜索了一个圆圈后,它指向的仍然是未知的[举手/皱眉]。

这个问题可能只有uni app的s-pull scroll插件才能使用。因为我不久前才启动uni app,vue才刚刚起步。当我第一次遇到这个问题时,我不知所措。经过一上午的处理,我们终于发现了问题并解决了。一方面,它方便了遇到相同问题的人快速找到解决方案。另一方面,它也记录了他们遇到的问题的发生、思考和解决,以及经验的积累。

圈占地