あなたはそれをやっている方法で結構です。しかし、ref
属性を介して別のvue固有の方法があります。この場合
<div class="columns">
<div class="left-column" id="context">
<p>Some text</p>
</div>
<div class="right-column" id="info-box" ref="infoBox"></>
<img />
<ul>
some list
</ul>
</div>
</div>
mounted() {
this.matchHeight()
},
matchHeight() {
let height = this.$refs.infoBox.clientHeight;
}
、あなただけの値を取得しているので、本当にあなたがあなたの元
getElementById
アプローチまたはVUE特定
ref
アプローチを使用するかどうかは関係ありません。しかし、要素の値を設定していた場合は、
ref
アプローチを使用する方がはるかに優れているため、値が変更されたことをvueが認識し、DOM内のそのノードを更新する必要がある場合は、 。
https://vuejs.org/v2/api/#vm-refs
更新
少数の人々は、上記のソリューションが彼らのために動作しなかったというコメントを残した:
あなたはここで多くを学ぶことができます。このソリューションはコンセプトを提供していましたが、完全な作業コードは例ではありませんでしたので、以下のコードで私の答えを補強しました。ここで
var app = new Vue({
el: '#app',
data: function() {
return {
leftColStyles: { },
lines: ['one', 'two','three']
}
},
methods: {
matchHeight() {
var heightString = this.$refs.infoBox.clientHeight + 'px';
Vue.set(this.leftColStyles, 'height', heightString);
}
},
mounted() {
this.matchHeight();
}
});
.columns{width:300px}
.left-column {float:left; width:200px; border:solid 1px black}
.right-column {float:right; border:solid 1px blue; }
<div id="app">
<div class="columns">
<div class="left-column" id="context" v-bind:style="leftColStyles">
<p>Some text</p>
</div>
<div class="right-column" id="info-box" ref="infoBox">
<img />
<ul>
<li v-for="line in lines" v-text="line"></li>
</ul>
</div>
</div>
</div>
<script src="https://unpkg.com/[email protected]/dist/vue.min.js"></script>
ブラウザでの結果のスクリーンショットです:
https://stackoverflow.com/a/526352/2316112 –
あなたが作成することができます再生?それはうまくいくようです:https://jsfiddle.net/wostex/63t082p2/84/(あなたのコードからあなたが何も返さないのであなたがあなたのメソッドの高さを返すならば)。 – wostex
実際、私のコンポーネントには多くの行とメソッドがあります。私はここでそれを簡略化した。しかし、なぜそれが実際の高さよりも小さい数値を返すのか分かりません(要素の検査時)。ローディングの問題ですか? すべてがロードされたときにメソッドを実行するとマウントされませんか? –