收藏
回答

怎么在Page的wxml上对自定义组件的方法进行路由?

比如我实现一个新增用户地址的按钮,但新增用户地址只是这个按钮组件的方法之一,我想在组件的wxml标签上直接填这个组件内部新增用户地址的方法,不想再扯到页面逻辑层里,能实现吗?


下面是一个设想例子,让组件接受来自page的函数名以决定调用哪个方法,要是eval没被禁我也就不用问这题了.

xxpage.wxml

 <img-btn-comp bindCompMethod="addressInfo" >
      <view class='redirect-address' slot="address">
        <text class='redirect-text'>新增收货地址</text>
        <icon class='iconfont icon-webicon213'></icon>
      </view>
    </img-btn-comp>


component/img-button

// components/image-button/index.js


Component({
  /**
   * 组件的属性列表
   */
  options: {
    multipleSlots: true
  },
  properties: {
    openType: {
      typeString
    },
    imageSrc: {
      typeString
    },
    bindCompMethod: {
      typeString
    },
    bindGetUserProfile: {
      typeString
    }


  },


  /**
   * 组件的初始数据
   */
  data: {
    addressInfo: ""
  },


  /**
   * 组件的方法列表
   */
  methods: {
    methodRoute() {
      console.log(this.data.bindCompMethod);
    },
    onGetUserProfile(event) {
      console.log(this.data);
      console.log(event.detail);
      if (this.data.openType == "getuserprofile") {
        this.triggerEvent('getUserProfile', event.detail, {})
      }
    },
    address(event) {
      console.log(event.detail);
      if (this.data.openType == "primary") {
        this.addressInfo(event);
      }
    },
    addressInfo(e) {
      wx.chooseAddress({
        success: res => {
          console.log(res);
          this.setData({
            addressInfo: res
          })
        },
        fail: (err) => {},
        complete: e => {
          if (e.errMsg == "chooseAddress:ok") {
            this.triggerEvent('addressInfo', {
              addressInfo: this.data.addressInfo,
              status: "ok"
            }, {})
          } else {
            this.triggerEvent('addressInfo', {
              status: "error"
            }, {})
          }
        }
      })
    }
  }
})

回答关注问题邀请回答
收藏

1 个回答

  • 游戏人生
    游戏人生
    2021-05-03

    2021-05-03
    有用
    回复 3
    • 另一种开始
      另一种开始
      2021-05-05
      ??
      2021-05-05
      回复
    • 游戏人生
      游戏人生
      2021-05-05回复另一种开始
      配置调用方法,包括路由
      2021-05-05
      回复
    • 另一种开始
      另一种开始
      2021-05-05
      不能直接把属性的值调给其observe,也就是Json的observe不能设成this.data.json.methodName,怎么破?
      2021-05-05
      回复
登录 后发表内容