Laravel Vue 网络通知组件错误

Posted

技术标签:

【中文标题】Laravel Vue 网络通知组件错误【英文标题】:Laravel Vue web-notification component errors 【发布时间】:2019-05-03 08:26:14 【问题描述】:

我正在尝试显示从组件 vue 到 layout/app.blade 的通知栏,但控制台中出现错误。

[Vue 警告]:创建钩子时出错:“TypeError: Cannot read property 'userId' of undefined”

和,

TypeError: 无法读取未定义的属性“userId”

我的 app.js 如下所示。

require('./bootstrap');
window.Vue = require('vue');
window._ = require('lodash');
window.$ = window.jQuery = require('jquery');

Vue.component('estate', require('./components/EstateNotification.vue'));

const app = new Vue(
    el: '#app',
    data: 
        estates: '',
    ,
    created()
      if (window.Laravel.userId)
          axios.post('/notification/estate/notification').then(response => 
              this.estates = response.data;
              console.log(response.data)
          );

          Echo.private('App.User.'+ window.Laravel.userId).notification((response) => 
              data = "data":response;
              this.estates.push(data);
              console.log(response);
          );
      
    
);

在我的路线中:

Route::post('/notification/estate/notification', 'EstateController@notification');

控制器:

public function notification()
    
        return auth()->user()->unreadNotifications;
    

但我想不通,为什么 userId 未定义?我在哪里做错了?非常感谢您的帮助!

【问题讨论】:

表示window.Laravel 为空。你在刀片<script>window.Laravel = !! json_encode(some object with userId) !!</script> 中输出了吗?这只是您的第一个错误。我在您的代码中看到更多错误。就像v-for="estate in estates" 不是你所拥有的,这是相反的。 其实我对 vue 并不陌生。但也不能为空。我犯了一些语法错误吗? 你做了这个if (window.Laravel.userId),它不是真正的 vue,它是 javascript。它期望有一个名为Laravel 的全局变量必须来自某个地方。您必须从blade 中的服务器输出它。 我修复了模板,重新设计了控制器和路由;但仍然得到未定义的用户 ID。我更新了有问题的代码。 @Noogen 【参考方案1】:

在 app.blade 中试试这个:

<div id ="app">
    <estate v-bind:estates="estates"></estate>
</div>




const app = new Vue(
       el: '#app'  //this ID
   );

【讨论】:

以上是关于Laravel Vue 网络通知组件错误的主要内容,如果未能解决你的问题,请参考以下文章

为啥使用 laravel vue 在桌面通知中出现错误“未捕获的 ReferenceError:Vue 未定义”?

Vuejs如何显示laravel输入数组验证错误

从另一个组件vue js和laravel调用方法

Laravel Vue - 控制台日志 Axios POST 响应与网络响应不同

vue组件库的正确使用方法是啥?

Laravel mix 在 vue 组件中看不到 img 元素