input在自定义组件中bindinput问题
发布于 5 年前 作者 nsu 13023 次浏览 来自 官方Issues

自定义组件, 这样:

MyInput.wxml:

<input placeholder="my input" bindinput="handleMyInput"/>

MyInput.js:

// pages/test/MyInput.js
Component({
  /**
   * 组件的属性列表
   */
  properties: {
 
  },
 
  /**
   * 组件的初始数据
   */
  data: {
 
  },
 
  /**
   * 组件的方法列表
   */
  methods: {
    handleMyInput(e) {
      this.triggerEvent('input', e, { bubbles: false });
    },
  }
})

页面, 这样:

pages/test/test.wxml

<!--pages/test/test.wxml-->
<text>pages/test/test.wxml</text>
<my-input bind:input="handleInput" ></my-input>
<button bindtap="submit">submit</button>

pages/test/test.js

// pages/test/test.js
Page({
 
  /**
   * 页面的初始数据
   */
  data: {
    value: '',
  }, 
  handleInput(e) {
    console.log("handleInput", e.detail.value);
    this.setData({ value: e.detail.value })
  },
  submit(e) {
    console.log(">>>>", this.data.value);
  },
})

然后输入, 失去焦点之后有一个这样的warning

input不在MyInput组件里面找监听的方法, 跑去页面test里面找? MyInput里面的监听器形同虚设了?

是我用法有问题吗? 求指教


回到顶部