收藏
回答

在app.js中写了一个监听器,回调组件页面的方法,回调后为啥拿不到this?

需求:从组件页面和普通页面都可以改变app.js中的公用参数,但是组件页面的参数需要跟公用参数同步,所以写了个监听器,监听别的页面改变这个公用参数后回调改变组件的参数。但是现在回调后,拿不到this,没办法改了

app.js

watch: function (method) {
  var obj = this.data;
  Object.defineProperty(obj, "isPlay", {
    configurable: true,
    enumerable: true,
    set: function (value) {
      this._name = value;
      console.log(audioActionBar);
      method(value);
    },
    get: function () {
      return this._name
    }
  })
}


组件页面

methods: {
  // 改变监听
  watchBack: function (name) {
    console.log(this);
  },
},

/**
 * 生命周期函数--监听页面加载
 */
ready: function(options) {
  let that = this;
  api.watch(that.watchBack)
},

执行回来 console 是undefined,在组件里写个点击直接执行就是能获取到的

最后一次编辑于  2020-06-22
回答关注问题邀请回答
收藏

1 个回答

  • z.song
    z.song
    2020-06-22

    图挂了

    2020-06-22
    有用 1
    回复 2
    • Mr.cheng
      Mr.cheng
      2020-06-22
      谢谢您,我重新编辑一下
      2020-06-22
      回复
    • z.song
      z.song
      2020-06-22回复Mr.cheng
      是想监听app.js的全局变量是吗?把var obj = this.data 改成var obj = app.globalData,this._name 改成 obj._name。watchBack里改成console.log(app.globalData) 试一下。
      2020-06-22
      回复
登录 后发表内容
问题标签