收藏
回答

Behavior不能调用上层的methods

框架类型 问题类型 终端类型 微信版本 基础库版本
小程序 Bug 微信iOS客户端 8.08 2.27.2
// behavior2.js
module.exports = Behavior({
  behaviors: [],
  methods: {
    aaa: { return [aa, bb] }
  }

})

// behavior1.js
module.exports = Behavior({
  behaviors: [require('behavior2.js')],
  methods: {
    aaa: { 
      //此处我想调用 behavior2.aaa(); 不知道如何调用。
      //不能使用this.aaa(),会死循环
      //const allPages = getCurrentPages();
      //const props = allPages[allPages.length - 1]; 不能使用 props.aaa(); 一样会死循环。
      //this.selectOwnerComponent() 为null
      //definitionFilter是上层处理下层的
      const newAAA = behavior2.aaa();
      newAAA.push(cc);
      return newAAA;
    }
  }
})

// component.js
Component({
  behaviors: [require('behavior1.js')],
})


最后一次编辑于  2022-11-29
回答关注问题邀请回答
收藏

1 个回答

  • 公子晨阳(ノ_ _)ノ
    公子晨阳(ノ_ _)ノ
    2023-01-13

    是会覆盖同名 behavior 方法的,所以可能需要你:

    1. 在 Behavior 构造器中避免命名冲突或者设置别名
    2. 在 behavior2.js 中导出方法 aaa,并在 behavior1.js 中使用
    // behavior2.js
    function aaa() {
      // this.xxxx 也可以,保证调用时 this 指向正确即可
      return [aa, bb]
    }
    
    const behavior = Behavior({
      behaviors: [],
      methods: {
        aaa
      }
    })
    
    module.exports = { behavior, aaa }
    
    // behavior1.js
    const behavior2 = require('behavior2.js')
    module.exports = Behavior({
      behaviors: [behavior2.behavior],
      methods: {
        aaa: { 
          //此处我想调用 behavior2.aaa(); 不知道如何调用。
          //不能使用this.aaa(),会死循环
          //const allPages = getCurrentPages();
          //const props = allPages[allPages.length - 1]; 不能使用 props.aaa(); 一样会死循环。
          //this.selectOwnerComponent() 为null
          //definitionFilter是上层处理下层的
          const newAAA = behavior2.aaa();
          newAAA.push(cc);
          return newAAA;
        }
      }
    })
    
    
    2023-01-13
    有用
    回复
登录 后发表内容