【问题标题】:Data from Blade File not rendering in Vue ComponentBlade 文件中的数据未在 Vue 组件中呈现
【发布时间】:2020-07-09 21:23:55
【问题描述】:

我正在使用 Laravel Blade 并尝试将一些刀片文件转换为 vue 组件。我的 pagetitle 刀片文件中有一个属性。我正在尝试从我的 vue 组件而不是刀片获取动态创建的页面标题以在屏幕上呈现。但是在我的 vue 控制台中,数据返回为“”。不知道为什么数据会被保留。

Header.vue

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

    </template>



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

app.js

    window.Vue = require('vue');

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

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

main.blade.php

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

header.blade.php //页面标题是从哪里拉出来的

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

【问题讨论】:

    标签: javascript php laravel vue.js


    【解决方案1】:

    在您的 Header.vue 文件中,您将 pageTitle 定义为数据属性,而它应该定义为 prop,因为您实际上是在 header 组件上将其作为属性提供。

    props: {
        pageTitle: {
            type: String
        }
    }
    

    【讨论】:

    • 是的,试试看。请参阅第二个答案以获取组件道具的链接
    【解决方案2】:

    已经存在一个名为header 的HTML 元素,我建议你重命名你的组件。您的组件缺少 props 属性以从刀片获取输入:

    页面标题.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>
    

    我们创建了一个title 属性。创建组件时,我们将组件的pageTitle 设置为main.blade.php 中给出的title

    app.js

    window.Vue = require('vue');
    
    import Pagetitle from './components/Pagetitle';
    Vue.component('pagetitle', Pagetitle);
    
    const app = new Vue({
       el: '#app',
    });
    

    main.blade.php

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

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

    【讨论】:

    • 所以我改变了我的组件名称。页面标题应该是 标签,但 Vue 不允许这样做,如何让我的 pageTitle 像典型标题一样在浏览器选项卡中显示为标题?
    • Vue 仅在您的 &lt;div id="app"&gt;...&lt;/div&gt; 内呈现,这不是您的 &lt;head&gt;&lt;title&gt; 所在的位置。你真的需要一个“简单”&lt;title&gt; 元素的 Vue 组件吗?听起来有点矫枉过正
    • 我只是在设置所有其他组件的一般制作流程。这里主要关心的是在 VUE 调试工具中我的标题仍然返回为空白 -> (title: " ");我更关心通过的数据
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    • 2019-09-26
    • 1970-01-01
    • 2019-01-20
    • 1970-01-01
    • 2017-12-11
    • 2019-11-14
    相关资源
    最近更新 更多