I have a Laravel website, when I use Laravel to load my data from the database, then a pass the results to JavaScript this way
<script>
window.forfaits = <?php echo json_encode($results); ?>;
</script>
Then I use Vue js v-for
to display my data.
The problem is that I see interpolation on the home page before Vue Js loads and v-cloak can't do the work since I'm getting my data with php then pass to js.
How can I do so that interpolation doesn't show on the page?
UPDATE
By interpolation I mean this:
And here is my main.blade.php file which is loaded as the home page:
<script>
window.forfaits = <?php echo json_encode($forfaits); ?>;
</script>
@extends('layouts.app')
<div>
@section('main-content')
<div class="col-sm-8 col-md-9">
<div id="filter-items">
<div class="product-item offre" v-for="forfait in filteredForfaits">
<div class="product-na">
<h3 class="product-name">@{{forfait.nom_forfait}}</h3>
<div class="product-actions">
............................
When using v-show="false" the element is rendered in the DOM, however, Vue applies the inline style display: none that hides the element completely. Also, do not forget about the powerful :class binding if you'd like more visibility customization. To hide the element but keep its space use :class="{ invisible: !
The v-cloak directive is a Vue. js directive that will remain on the element until the associated Vue instance finishes compilation. Combined with CSS rules such as [v-cloak] { display: none }, this directive can be used to hide uncompiled mustache bindings until the Vue instance is ready.
v-cloak is a attribute that you can add to a element you want to hide, while Vue is mounting. Soon as Vue is ready, this attribute is removed.
If you're trying to use v-cloak
to hide uncompiled templates you should create CSS rule as described here: https://vuejs.org/v2/api/#v-cloak
It works really simple. Uncompiled templates is hidden by v-cloak
css rule. If Vue compiler seeing v-cloak
attribute on the compiled template, it simply deletes the attribute and your component appears on the page.
[v-cloak] {
display: none;
}
Have you include it?
Also, you must be sure that css file, contains [v-cloak] rule will be loaded at a time the uncompiled Vue templates appears. You should decide critical css or use rel="preload"
(already available in modern browsers) for that piece of css.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With