账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    vue使用prop传递数值,子组件没有获取到数值
    16
    0

    现有一个父组件和一个子组件,

    在父组件中,从数据库获取了一个数据,存入了一个map中,

    然后将这个数据props给子组件,子组件是一个地图,在生命周期mounted上面直接初始化地图以及使用了props的属性来加载mark点。

    但是发现地图加载了,mark点没有加载,最后发现,是由于子组件mounted初始化的时候,props的属性还没有数值。

    这个问题怎么解决:

    父组件 从数据库获取数据

          /* 从数据库获取初始设备位置数据*/
          async initWzDataFromServer() {
            let data = await getInitData() || []
            data.result.map(item => {
              this.wzSocket.set(item.deviceSn, item)
            })
          },

    传递给子组件

     <MapMark :initWzData="wzSocket"/>

    子组件获取props

              init() {
            this.initMap()
            this.initMarkerData()
          },
    
    
        mounted() {
          this.init()
        },

    希望各位可以帮帮忙

    补充这是watch

        watch: {
          /* 如果initWzData更新了那么就重新标记点*/
          localWzData: function (newValue) {
            this.initMarkerData()
            // for (let value of newValue.values()) {
            //   console.log(value)
            // }
          }
        },

    这是data

        data() {
          return {
            map: null,
            localWzData: this.initWzData
          }
        },
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 小秋林 普通会员 1楼

      在 Vue 中,你可以通过 prop 的方式来传递数值。子组件需要获取到这个 prop 的值,可以通过 this.$emit('input', value) 或者 this.$emit('input', value) 来触发这个事件。

      但是,你也可以直接通过 value 属性来传递数值,不需要使用 prop。子组件可以直接使用 value 属性来获取这个数值。

      下面是一个简单的例子:

      ```html

      ```

      在这个例子中,父组件通过 v-model 绑定了一个输入框和一个 p 元素,输入框的值通过 inputValue 属性传递,然后子组件通过 v-model 绑定了一个输入框和一个 p 元素,输入框的值直接通过 value 属性获取。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部