Vue.js 与 laravel 5.3

Posted

技术标签:

【中文标题】Vue.js 与 laravel 5.3【英文标题】:Vue.js with laravel 5.3 【发布时间】:2017-02-10 11:21:06 【问题描述】:

我正在使用 Laravel 5.3 和 Vue.js(对此非常陌生)。 这是我当前的代码

app.js

var vm = new Vue(
    el: '#app',

    data:  
            messages: []
    ,

    ready: function()

        this.getMessages();
    ,


    methods: 

        getMessages: function()
                this.$http.get('api/messages').then((response) => 
                    this.$set('messages', data);
                        , (response) => 
                );
        
    
);

api.php 路由很简单

Route::get('/messages', function() 
     return Message::latest()->get();
    );

注意:在这里,当我尝试直接以 localhost:8000/api/messages 访问路由时,我会得到包含完整数据的数组

在我看来,我有

<div class="content"   id="app">
                <tr v-for="message in messages">
                    <td> @ message </td>
                </tr>
</div>

我已经包含了所有 jquery、vue.js 和 vue.resource 的在线库。 当我使用 vue.js 调试器时,它显示它返回 messages[] 但它是空的。 我已经遵循了很多示例,但无法使其正常工作。 非常感谢任何帮助

【问题讨论】:

【参考方案1】:

试试这个:

var vm = new Vue(
    el: '#app',

    data:  
            messages: []
    ,

    ready: function()

        this.getMessages();
    ,


    methods: 

        getMessages: function()
                let ctrl = this;
                this.$http.get('api/messages').then((response) => 
                    this.messages = response.data;
                );
        
    
);

【讨论】:

【参考方案2】:

如果您使用的是 vue.js 2.0,ready 现在已弃用,您可以使用 mount 代替

mounted: function () 
  this.$nextTick(function () 
    this.getMessages();
  )

Vue.js Docs

【讨论】:

【参考方案3】:

由于您使用的是箭头语法,所以我切换到完整的 ES2015 代码

getMessages() 

    this.$http.get('api/messages')
      .then( result => 
       this.messages = result.json() 
      )


【讨论】:

贝尔明。非常感谢您的回复。我试过了,它仍然是空的。但我找到了一个可能不是最好的解决方案。我使用的是 vue.js 版本 2.0.1,一旦我将其更改为旧版本 1.0.2 就可以了。 很遗憾我还没有使用 VueJS 2.0,所以 API 中的某些内容可能发生了变化。

以上是关于Vue.js 与 laravel 5.3的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 5.3 中使用带有 Vue.js 2.0 的组件中使用外部 html 模板

Vue 2 vue-router 2 laravel 5.3 问题

将 Laravel Blade 模板与 Vue JS 和事件监听器一起使用

Vue Router Laravel 5.3 Vue 2 JS 上的 CSRF 令牌复制

任何想法如何使用 vue js 和 vue 路由器在 laravel 5.3 中进行基于会话的身份验证

Laravel 5.3 中以 API 为中心的应用程序