をレンダリングしながら、私は部分図で使用されているVue.jsで単純なコンポーネントを持っています質問コンテンツの周りに「より多くの情報を表示する」ロジックを作成することです。コンパイルVue.jsコンポーネントLaravelブレード部分図
コンポーネントがコンパイルされ、ページの読み込みに問題はありません。しかし、質問をAjax経由で動的にロードする必要がある場合があります。このために、単純なjQuery Ajax呼び出しを行い、question.blade.phpのHTMLを取得してDOMに追加します。問題は、コンポーネントがコンパイルされていないです。
ページロード時に発生するかAjaxコールで発生するかにかかわらず、パーシャルビューがレンダリングされるときにコンポーネントが常にコンパイルされるようにするにはどうすればよいですか?
全コンポーネントコード:
{% verbatim %}
<template>
<div>
<div v-bind:class="cssClasses" v-html="content"></div>
<div v-if="activateShowMore && !isShown" class="sml-button closed" v-on:click="toggleButton()">
<span class="sml-ellipsis">...</span><span class="sml-label">{{$t('show_more')}}</span>
</div>
<div v-if="activateShowMore && isShown" class="sml-button open" v-on:click="toggleButton()">
<span class="sml-label">{{$t('show_less')}}</span>
</div>
</div>
</template>
<style lang="sass" scoped>
/*styles*/
</style>
<script type="text/babel">
export default {
props: ['content', 'type'],
data() {
return {
activateShowMore: false,
isShown: false,
cssClasses: this.getCssClasses()
}
},
locales: {
en: {
'show_more': 'show more',
'show_less': 'show less'
},
de: {
'show_more': 'mehr anzeigen',
'show_less': 'weniger anzeigen'
}
},
mounted() {
this.checkShowMore();
},
watch: {
isShown: function(shouldBeShown) {
this.cssClasses = this.getCssClasses(shouldBeShown);
}
},
methods: {
checkShowMore: function() {
let $element = $(this.$el);
let visibleHeight = $element.outerHeight();
let realHeight = $element.find('.text-area-read').first().outerHeight();
let maxHeight = this.getMaxHeight();
this.activateShowMore = (visibleHeight === maxHeight) && (visibleHeight < realHeight);
},
getMaxHeight: function() {
switch (this.type) {
case 'question':
return 105;
case 'answer':
return 64;
}
},
toggleButton: function() {
this.isShown = !this.isShown;
},
getCssClasses: function(shouldBeShown) {
if (undefined === shouldBeShown || !shouldBeShown) {
return 'sml-container' + ' sml-' + this.type + ' sml-max-height';
}
return 'sml-container' + ' sml-' + this.type;
}
}
}
</script>
PHPはサーバー用に、HTML –
はAJAX呼び出しの結果に依存VUEコンポーネントで使用しようとするのですか?そうであれば!そのデータをvueにどのように送っていますか? – zeidanbm
@zeidanbmコンポーネントの背後にある考え方は、質問テキストの周りに「より多くの情報を表示する」ロジックを作成することです。そのため、Ajaxを呼び出して質問を取得するたびに、テキストコンテンツを処理するためには、「もっと表示する」コンポーネントが必要です。 – lesssugar