收藏
回答

自定义组件的生命周期无法使用methods中定义的方法名

问题模块 框架类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 component 工具 因为编译通不过,所以没有实机运行 1.9.2

你想反馈一个 Bug 还是 提一个需求?

是Bug

如果是 Bug:


* Bug 表现是什么?预期表现是什么?

官方文档中说生命周期函数可以是methods中定义的方法名


* 如何复现?

* 提供一个最简复现 Demo


定义一个组件,然后

ready:change,或者ready:'change'、this.methods.change等尝试过都无效

methods:{

change:function(){console.log(1)}

}



最后一次编辑于  2018-02-03
回答关注问题邀请回答
收藏

12 个回答

  • Truman
    Truman
    2018-08-07

    在ready中console.log(this),你就能找到答案。

    2018-08-07
    赞同
    回复
  • 李倪生
    李倪生
    2018-02-05

    好的,谢谢,这种是可以的

    2018-02-05
    赞同
    回复
  • 小程序技术专员-LastLeaf
    小程序技术专员-LastLeaf
    2018-02-05

    我的意思是


    ready: () => {

    this.change()

    }

    2018-02-05
    赞同
    回复 2
    • 徐彪
      徐彪
      2018-08-22

      这种也无法调到,this 为 undefined


      2018-08-22
      回复
    • 小程序技术专员-LastLeaf
      小程序技术专员-LastLeaf
      2018-08-22

      注意 JS 的箭头函数没有 this (不明白的话可以查询一下 JS 语法)。


      下面的报错应该是别的问题(比如连续调用了 wx.navigateTo 导致有跳转失败了)。

      2018-08-22
      回复
  • 李倪生
    李倪生
    2018-02-05

    @LastLeaf

    不行,直接ready:this.change,这样会报错,提示未定义,如图


    2018-02-05
    赞同
    回复
  • 小程序技术专员-LastLeaf
    小程序技术专员-LastLeaf
    2018-02-05

    this.methods.change


    不需要中间的 “methods” ,直接 this.change 就行了。

    2018-02-05
    赞同
    回复
  • 李倪生
    李倪生
    2018-02-05

    我说的是自定义组件,麻烦你能把整个代码结构贴出来吗?

    2018-02-05
    赞同
    回复
  • philly
    philly
    2018-02-05


    比如这个样子,定义的函数不是放在methods里面的,和onShow,onLoad同级,一样可以this调用

    2018-02-05
    赞同
    回复
  • 李倪生
    李倪生
    2018-02-05

    抱歉,可能我没有理解你的意思,你说的写在methods外面是指的写在component构造器外面是吧,我试了下,这样是可以的;但是这样就无法调用到component内部的数据了。。。

    2018-02-05
    赞同
    回复
  • 李倪生
    李倪生
    2018-02-05

    我写了个demo试了下,写在methods外面根本调不到这个方法,反正我是没调用成功

    2018-02-05
    赞同
    回复
  • 李倪生
    李倪生
    2018-02-05

    你确定可以写在methods外面?这是自定义组件啊

    2018-02-05
    赞同
    回复

正在加载...