【发布时间】:2018-11-07 16:20:25
【问题描述】:
我看到了一些回答我的问题但不完全的答案,所以让我解释一下我想要做什么。
我们在我们的网站布局中使用全局 #app div,这是一个 Laravel 项目。所以所有页面都将是相同的主要Vue 实例,因此我将关键功能分成组件。
所以,第一个示例只是一个简单的 Tab 组件,它要么将任何子组件分成选项卡,要么接受单个子组件然后呈现的一些数据。
所以下面我从另一个组件注入一些数据,这个ajax 组件实际上只是进行了一个 ajax 调用,并使数据在它的插槽中可用。
<ajax endpoint="/api/website/{{ $website->id }}/locations/{{ $location->slug }}/get-addresses">
<div>
<tabs :injected="data">
<div>
<div v-for="row in data">
@{{ row['example' }}
</div>
</div>
</tabs>
</div>
</ajax>
现在这一切都很好,在一定程度上,但这与下面的代码有关。这包含一个组件,它允许用于拖放元素,它通过字面上移动数据并让 Vue 处理 DOM 更改来重新排列它们。
这当然可以在您注入的自己的数据中正常工作,但是当您在下面的组件中更改数据时,会清除该子组件。
<ajax endpoint="/api/website/{{ $website->id }}/locations/{{ $location->slug }}/get-addresses">
<div>
<tabs :injected="data">
<div>
<div v-for="row in data">
<draggable :injected="row">
<div>
<div v-for="item">
@{{ item }}
</div>
</div>
</draggable>
</div>
</div>
</tabs>
</div>
</ajax>
我需要找到一种方法,使对此数据的任何更改都应用于父数据,而不是传递给子组件的数据。
这样做的最佳做法是什么!?
编辑 1
基本上,我需要任何子组件来操作ajax 组件中的数据。 ajax 中的孩子可能会改变,或者可能会有更多,所以我只需要他们所有人都这样做,而不知道他们的顺序或位置。
【问题讨论】:
-
我很想帮助你,但我不明白这个问题。你到底想完成什么?哪个组件做什么?数据在哪里?也许将组件代码与数据和方法属性一起发布会有所帮助?
-
@Imre_G 进行了编辑
-
我怀疑你的need a
:key在你的v-for中。 -
@MartynBall 看起来已经很眼熟了,但你不是在两天前提出了类似的问题吗?你在哪里卡住了?
-
@Imre_G 我想我可能会问类似的问题。我的数据进入多个组件时基本上存在问题。就像我在上面的问题中所说的那样,如果我继续将这些数据传递给道具,然后在道具中更改该数据,这不会更新原始数据,因此任何其他更改都可能重新渲染子组件,我会松动变化!
标签: javascript vue.js