收藏
回答

同一页面引用多次自定义组件,数据永远只更新第二次引用的地方?

同一个页面引用两次语音转文字的自定义组件,每次语音的结果都只更新在第二次引用的输入框中(主题处语音输入,但得到的结果却更新在描述的字段中,描述处字段的语音结果正常更新在描述处)

引用处

 
        <van-field name="titleContent" model:value="{{titleContent}}" label="主题:" required placeholder="请输入" bind:change="onTitleChange">
          <voice slot="right-icon" model:voice-value="{{titleContent}}" model:size="30"></voice>
        </van-field>
       
      
        <van-field name="desc" model:value="{{desc}}" label="描述:" type="textarea" autosize placeholder="请输入" bind:change="onDescChange" required>
          <voice slot="right-icon" model:voice-value="{{desc}}" model:size="22"></voice>
        </van-field>


最后一次编辑于  2023-04-17
回答关注问题邀请回答
收藏

2 个回答

  • 呦呦路鸣
    呦呦路鸣
    2023-04-17

    实验了一下:只存在一次调用自定义组件,数据更新正常

    更换了上下两次调用的自定义组件的位置,发现结果永远只更新在最后一次调用自定义组件的位置

    2023-04-17
    有用 1
    回复 1
  • 常东
    常东
    2023-07-04

    原因及解决方法:

    原因:

    根据题主https://developers.weixin.qq.com/community/develop/article/doc/0004c2cf8303304cedafaabff56813 这篇文章的解决方法可以知道,导致这个问题的主要原因是,无论有多少的声音转文字组件,这些组件都共享一个全局的声音转文字的manager,也就是 getRecordRecognitionManager此方法的返回值。

    所以就会导致在所有的监听方法无论是onStart还是onError,onStope,都会以最后一次绑定的为准。(js的对象为引用特性,更改一个地方其他地方都会受到影响。)

    因此出现了无论更改那哪个,都只会在最后一个生效的问题。

    解决:

    题主的方法就可以解决,如果想要更详细的,根据上面的原因亦可灵活解决。

    下图为本人的一个类似解决方法。

    2023-07-04
    有用
    回复
登录 后发表内容