2017-09-21 2 views
2

私はブートストラップグリッドを使用するVueコンポーネントを持っています。子コンポーネントでは、コントローラ内の特定のdivの現在の幅を取得したいと考えています。VueJS Get div of div

相続人の子コンポーネント:この例では

<template> 
    <div id="bg-prev" ref="prev"> 
     <h1>{{x}}</h1> 
    </div> 
<template> 

export default { 
    props: ['section'], 
    data() { 
    return { 
     x: 0, 
     y: 0, 
    } 
    }, 
    mounted() { 
    this.getWindowWidth(); 
    }, 
    methods: { 
    getWindowWidth() { 
     this.x = this.$refs.prev.clientWidth; 
    } 
    } 
}; 
<style> 
    #bg-prev { 
     width: 100%; 
    } 
</style> 

幅は常に、私はそれを検査する際の要素が明確な幅を有しているにもかかわらず、0になります。私はここで何が欠けていますか、マウントされたフックは、vueライフサイクルの最新のものですか?任意のヘルプは高く評価されます;)

+1

これは私のjsfiddleで正常に動作するようです。https://jsfiddle.net/ikbelkirasan/d18bosh6/1/ – Ikbel

+0

これは本当に奇妙ですが、私の例ではコンポーネントは子コンポーネントです。たぶんそれは子供が親コンポーネントの前にマウントされるということがあるので、親を指す100%の幅はまだ存在しません。 –

+0

あなたは本当に再現可能なデモを作成したいと思っています。私はなぜ私が起こるのか知っているかもしれませんが、検証するために自分でデモを作成する必要があります。デモを作成することで、簡単に作成できます。 – dfsq

答えて

1

いくつかのタイプミスを除いて、コードは完全に機能しています。 (閉じるテンプレートタグがありません)

追加のフックは必要ありません。実装されているメソッドでComponentのレンダリングを切り替える場合のみ例外があります。次に、あなたのようなものを使用します

const that = this 
that.showDiv = true 
that.$nextTick(function() { 
    that.getWindowWidth() 
}) 

マウント時に親が幅を持っていますか? 0%の100%はまだ0%です。

+0

親要素は、col-md-9のブートストラップdivです。 私が言ったように、私は要素とその親を調べると幅と高さがある –

+2

超高校とES6の美しい(冗談)ミックス。 – dfsq