简体   繁体   English

Blade 文件中的数据未在 Vue 组件中呈现

[英]Data from Blade File not rendering in Vue Component

I am working in Laravel Blade and trying to convert some blade files to vue components.我正在使用 Laravel Blade 并尝试将一些刀片文件转换为 vue 组件。 I have a property in my blade file of pagetitle.我的 pagetitle 刀片文件中有一个属性。 I am trying to get the dynamically created page title to render on the screen from my vue component and not blade.我正在尝试从我的 vue 组件而不是刀片获取动态创建的页面标题以在屏幕上呈现。 But in my vue console, data comes back as "".但是在我的 vue 控制台中,数据返回为“”。 Not sure why the data is carrying over.不知道为什么数据会结转。

Header.vue Header.vue

    <template>
        <div>
            <p title="page-title">{{pageTitle}}</p>
        </div>

    </template>



   <script>
     export default {
     props: {
        pageTitle: {
            type: String
        }
      }
    }
  </script>

app.js应用程序.js

    window.Vue = require('vue');

    import Header from './components/Header';
    Vue.component('header', Header);

    const app = new Vue({
        el: '#app',
    });

main.blade.php main.blade.php

<div id="app">
    <header :page-title="{{$pageTitle}}"></header>
</div>

header.blade.php //where page title is being pulled from header.blade.php //从中提取页面标题

    <title>
        {{ $pageTitle ?? 'Default Page Title' }}
    </title>

In your Header.vue file you are defining pageTitle as a data property, while it should be defined as a prop , since you are actually providing it as a property on the header component.在 Header.vue 文件中,您将pageTitle定义为数据属性,而它应该定义为prop ,因为您实际上是在header组件上将其作为属性提供。

props: {
    pageTitle: {
        type: String
    }
}

There already exists an HTML element called header , I suggest you rename your component.已经存在一个名为header的 HTML 元素,我建议您重命名您的组件。 Your component is missing a props attribute to take input from blade:您的组件缺少用于从刀片获取输入的props属性:

Pagetitle.vue:页面标题.vue:

<template>
    <div>
        <p title="page-title">{{ this.pageTitle}}</p>
    </div>
</template>

<script>
    export default {
        props: ['title'],
        data() {
            return {
                pageTitle: '',
            };
        },
        created() {
            this.pageTitle = this.title
        }
    }
</script>

We created a title property.我们创建了一个title属性。 When the component is created, we set the component's pageTitle to the title given in main.blade.php .创建组件时,我们将组件的pageTitle设置为main.blade.php中给出的title

app.js应用程序.js

window.Vue = require('vue');

import Pagetitle from './components/Pagetitle';
Vue.component('pagetitle', Pagetitle);

const app = new Vue({
   el: '#app',
});

main.blade.php main.blade.php

<div id="app">
    <pagetitle :title="foo bar"></pagetitle>
</div>

https://v2.vuejs.org/v2/guide/components-props.html https://v2.vuejs.org/v2/guide/components-props.html

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM