【发布时间】:2017-03-28 14:04:13
【问题描述】:
我有以下类型的代码:
<div>
<compA />
<compB />
</div>
如何确保第一个 compA 仅在呈现 compB 之后才呈现。
为什么我想要的是我对compA 的几个元素有一些依赖,而compB 的样式取决于这些元素的存在。
为什么要详细说明:
我有一些复杂的 UI 设计,滚动时会固定一个框。所以当你滚动时它不会超出屏幕,一旦你开始滚动它就会固定它开始触摸标题。所以我使用jquery-visible 来查找具有特定id 的div 在屏幕上是否可见,如果不可见,我会更改样式并固定该框。以下代码应该说明我在做什么:
methods: {
onScroll () {
if ($('#divId').visible(false, false, 'vertical')) { // This is div from the compA, so I want to make sure it is rendered first and it is visible
this.isFixed = false
} else {
this.isFixed = true
}
}
},
mounted () {
window.addEventListener('scroll', this.onScroll() }
},
destroyed () {
window.removeEventListener('scroll', this.onScroll)
}
我不想将它们放在同一个组件中,原因之一是这些组件的性质没有意义,其他我在很多地方使用compA,而compB 仅特定于一页。这些布局也不允许我按照 cmets 中的建议将 compB 设为 compA 的子级。
欢迎提出任何建议。
【问题讨论】:
-
我最好的方法是使用事件。
-
可能
CompB不是CompA的孩子,因为CompB依赖于CompA? -
@AmreshVenugopal 不,由于这些组件的性质,我不喜欢这样做。
-
@JonatasWalker 如何在这里使用事件?
-
好吧,我的另一个问题是为什么
CompB依赖于CompA的元素,为什么不依赖CompA的数据?由于不同元素种类的差异也会是某种v-if='true': make input tag'v-else: make p-tag之类的实现?
标签: javascript vue.js vuejs2 vue-component