【问题标题】:Passing ref's content from a child to another VueJS child component将 ref 的内容从子组件传递到另一个 VueJS 子组件
【发布时间】:2017-07-19 10:28:24
【问题描述】:

我正在学习 VueJS,但我对 ref, $refs 讲座感到有些困惑。我试图从 vue 的文档中理解它,但我没有得到我想知道的。

如果我有这个组件:

<user-item ref="details"></user-item>

我使用

从这个组件获取数据

this.$refs.details

在用户父组件中使用该数据,因为此用户项是用户组件的子项。

<div id="User">
  <user-item ref="details"></user-item>
</div>

同时,我还有另一个名为的组件,假设权限也是子组件,用于用户组件:

<div id="User">
   <user-item ref="details"></user-item>
   <permissions></permissions> 
</div>

在这个 Permissions 组件中,我需要相同的 this.$refs.details,但从我测试的结果来看,就像一个实验一样,它不起作用。

这只是一个简单的例子。

谁能告诉我该怎么做?

【问题讨论】:

    标签: vue.js vuejs2


    【解决方案1】:

    您不需要使用$refs 在组件之间传递数据。请改用dataprops 或在组件之间调度事件。

    如果您真的想通过$refs 访问您的user-item。然后你应该从你的permissions 组件中这样做。

    this.$parent.$refs.details
    

    它基本上会获得对在其$refs 中有details 的父级(您的User 组件)的引用。

    这假设您的组件是这样组合在一起的:

    <user>
      <user-item ref="details"></user-item>
      <permissions></permissions>
    </user>
    

    编辑: $refs 在安装组件时似乎是空的,因此,details 将是 undefined。将整个 $refs 对象传递给 permissions 组件的 props 似乎可以与 OP 一起使用。

    <user>
      <user-item ref="details"></user-item>
      <permissions :parentRefs="$refs"></permissions>
    </user>
    

    其中parentRefspermissions 组件的props 中的成员。

    OP 能够使用this.parentRefs.detailspermissions 访问user-item

    【讨论】:

    • Kira 我尝试使用 this.$parent.$refs.details 得到:“无法读取未定义的属性'详细信息'”
    • 嗯,您可以发布您的代码的 sn-p 吗?它应该可以正常工作。
    • this.$nextTick(() =&gt; { this.$parent.$ref.details.open({ title: this.fullName, }); }); 这是在孩子身上,这是在父母身上:this.$nextTick(() =&gt; { this.$refs.details.open({ title: this.fullName, }); });
    • 尝试控制台日志this.$parentthis.$parent.$refs。我认为$refs 在组件安装后需要一些时间才能使用。我在很多情况下都看到了这一点。
    • 对于 this.$parent.$ref 我得到:Object {backdrop: div.fullscreen.layout-backdrop.transition-generic.no-pointer-events.q-touch.q-touch-y, header: header.layout-header.transition-generic.fixed-top, main: div.layout-page-container.transition-generic, footer: ... 对于 this.$parent 我在控制台中得到:VueComponent {_uid: 11, _isVue: true, $options: Object, _renderProxy: Proxy, _self: VueComponent…}
    猜你喜欢
    • 2020-05-08
    • 1970-01-01
    • 2017-10-03
    • 1970-01-01
    • 2020-12-06
    • 2022-06-15
    • 2020-05-02
    • 1970-01-01
    • 2019-09-26
    相关资源
    最近更新 更多