将ref的内容从子项传递到另一个VueJS子组件

时间:2017-07-19 10:28:24

标签: vue.js vuejs2

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

例如,如果我有这个组件:

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

我使用

从这个组件中获取数据

这个。$ refs.details

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

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

与此同时,我还有另一个名为“用户组件的权限”的组件:

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

在这个权限组件中我需要相同的这个。$ refs.details,但是我测试的,就像实验一样,不起作用。

这只是一个简单的例子。

有人可以告诉我该怎么做?

1 个答案:

答案 0 :(得分:11)

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

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

this.$parent.$refs.details

它基本上会获得对其User details$refs的父(您的<user> <user-item ref="details"></user-item> <permissions></permissions> </user> 组件)的引用。

这假设您的组件放在一起如下:

$refs

修改 在安装组件时,details似乎是空的,因此undefined将是$refs。将整个permissions对象传递给props组件<user> <user-item ref="details"></user-item> <permissions :parentRefs="$refs"></permissions> </user> 似乎与OP一起使用。

parentRefs

其中permissionsprops组件user-item中的成员。

OP可以使用permissionsthis.parentRefs.details访问public class TestClass{ private byte[] attribute0; private customClass0 attribute1; private customClass1 attribute2; ... public TestClass(byte[] args){ int offset = 0; byte[] argsCustomClass0; byte[] argsCustomClass1; System.arraycopy(args, offset, attribute0, 0, attribute0.length); offset += attribute0.length; System.arraycopy(args, offset, argsCustomClass0, 0, argsCustomClass0.length); offset += attribute0.length; attribute1 = new CustomClass1(argsCustomClass0); System.arraycopy(args, offset, argsCustomClass1, 0, argsCustomClass1.length); offset += argsCustomClass1.length; attribute2 = new customClass1(argsCustomClass1); ... }