在vueify组件中使用vue-resource

时间:2015-10-27 19:25:12

标签: browserify vue.js

我想在我的vueify组件的script标签中使用vue-resource $ http方法,但我总是收到此错误:

Uncaught TypeError: Cannot read property 'get' of undefined

我的猜测是“this”关键字不起作用(不知道原因)或模块安装不正确(尽管应该检查)。我的vue组件看起来像这样:

<template>
    <!-- just displaying the data -->
</template>

<script>
    module.exports = {
        data: function () {
            return {
                foo: "bar"
            }
        },

        ready: function() {
            // the error occurs on the next line
            this.$http.get('/api/users', function(data){
                this.$set('users', data);
            });
        }
    }
</script>

2 个答案:

答案 0 :(得分:7)

答案很简单,我在组件中也必须require('vue')。我真的没有想到这个,因为我对browser- / vueify很新。

对于想知道的人来说,工作代码看起来像这样:

<script>
    var Vue = require('vue');

    module.exports = {
        data: function () {
            return {
                message: "Hello World!"
            }
        },

        ready: function() {
            var _self = this;
            Vue.http.get('/api/users', function(data){
                _self.$set('users', data);
            });
        }
    }
</script>

编辑:这是我在main.js文件中设置整个依赖项和模块的方法

// require dependencies
var Vue = require('vue');
var VueRouter = require('vue-router');
var VueResource = require('vue-resource');

// use vue-router and vue-resource
Vue.use(VueRouter);
Vue.use(VueResource);

// Laravel CSRF protection
Vue.http.headers.common['X-CSRF-TOKEN'] = document.getElementById('token').getAttribute('value');

// Routing
var router = new VueRouter();

var App = Vue.extend();

// start router in element with id of app
router.start(App, '#app');

答案 1 :(得分:3)

仅供参考,对于.vue文件,您不必要求Vue。相反,您可以像这样引用实例:

{{1}}