Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

使用getCurrentPages()获取不到页面的方法 #558

Closed
pigjane opened this issue May 28, 2018 · 9 comments
Closed

使用getCurrentPages()获取不到页面的方法 #558

pigjane opened this issue May 28, 2018 · 9 comments

Comments

@pigjane
Copy link

pigjane commented May 28, 2018

//Page2
methods:{
      back() {
            var pages = getCurrentPages();
            var prevPage = pages[pages.length - 2]; //上一个页面
            prevPage.changeData("1");
            wx.navigateBack();
      }
}
//Page1
methods: {
    changeData(val) {
      console.log(val);
    }
}

运行 back()
prevPage.changeData is not a function;at pages/remaincash/main page handleProxy function
TypeError: prevPage.changeData is not a function

在小程序中可以正常使用前一页方法

@pigjane
Copy link
Author

pigjane commented May 29, 2018

getCurrentPages()获得的是小程序页面的实例,小程序中定义的func都在这个实例上。
mpvuemethods里的funcvue实例上,通过getCurrentPages()拿不到。
我现在通过this.$mp.page.xxx去注册一个方法放到小程序实例上,别的页面才能调到。

@F-loat
Copy link
Contributor

F-loat commented May 29, 2018

可以通过 eventBus 来触发希望执行的方法

@pigjane
Copy link
Author

pigjane commented May 29, 2018

@F-loat 我是新开了页面也可以吗

@F-loat
Copy link
Contributor

F-loat commented May 29, 2018

需要的页面引用 eventBus,然后监听某个事件,然后其他页面触发那个事件就可以

@pigjane
Copy link
Author

pigjane commented May 29, 2018

@F-loat 有点麻烦,我的开发还需要引这个bus,最终效果是开发只需要调一个api就行,我还是封装一下吧

@hucq
Copy link
Member

hucq commented May 30, 2018

@pigjane 你想实现的是:在当前页面获取到其他页面的实例并且调用其方法,那么需要这里的 “方法” 具有如下特点:

  1. 方法定义在与当前 page 对应的 vue 文件中
  2. 方法不能定义在 methods 中,而是与之同级

建议使用 @F-loat 同学建议的方式来设计页面间通信吧。

@suancaizhang
Copy link

把getCurrentPages 写在工具函数中也不行

@kid1412621
Copy link

一年过去啦! 在用 vant weapp 的一个组件遇到了这个报错

@ibarakiowo
Copy link

一年过去啦! 在用 vant weapp 的一个组件遇到了这个报错

van-notify 是不是😏

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants