首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用vue-resource进行Vueify

使用vue-resource进行Vueify
EN

Stack Overflow用户
提问于 2016-06-22 20:33:37
回答 3查看 1.4K关注 0票数 3

我似乎无法让vue-resource与vueify一起工作。我已经定义了一个vue组件,并将其包含在我的main.js文件中。

代码语言:javascript
复制
import Vue from 'vue'
import MyComponent from './my-component.vue'

new Vue({
    el: '#app',
    components: {
        myComponent: MyComponent
    }
});

我的vue组件文件如下所示:

代码语言:javascript
复制
<script>
    import Vue from 'vue';
    // import VueResource from 'vue-resource'
    // Vue.use(VueResource);

    export default {
        template: '#my-component-template',

        created: () => {
            Vue.$http.get('/my/api/123',
                data => {
                    console.log(data)
                }, err => {
                    console.log("Error");
                    console.error(err);
                }
            );
        }
    }
</script>

在当前状态下,我收到以下错误:

代码语言:javascript
复制
Uncaught TypeError: Cannot read property 'get' of undefined

如果我注释掉组件文件中关于vue-resource的两行,我收到的错误如下所示:

代码语言:javascript
复制
Uncaught TypeError: Cannot redefine property: $url

package.json:

代码语言:javascript
复制
{
  "private": true,
  "scripts": {
    "prod": "gulp --production",
    "dev": "gulp watch"
  },
  "devDependencies": {
    "bootstrap-sass": "^3.3.6",
    "gulp": "^3.9.1",
    "laravel-elixir": "^5.0.0",
    "laravel-elixir-vueify": "^1.0.3",
    "vue": "^1.0.25",
    "vue-resource": "^0.8.0"
  }
}

Gulpfile:

代码语言:javascript
复制
var elixir = require('laravel-elixir');
require('laravel-elixir-vueify');

elixir(function(mix) {
    mix.browserify('main.js');
});

所有关于SO的现有答案都没有带来任何结果。请帮帮忙。

EN

回答 3

Stack Overflow用户

发布于 2016-06-23 03:39:19

您应该用http替换$http

代码语言:javascript
复制
import Vue from 'vue'
import VueResource from 'vue-resource'

Vue.use(VueResource)

export default {
  created: () => {
    Vue.http.get(...)
  }
}

此外,将VueResource安装到main文件中也是一种很好的做法,然后,我们可以像@ said所说的那样使用this关键字。

要实现这一点,您应该更改arrow function,因为this引用全局对象:

代码语言:javascript
复制
// refers to the global object
created: () => {}

// refers to the Vue component
created () {
  this.$http.get(...)
}
票数 4
EN

Stack Overflow用户

发布于 2016-06-23 00:56:44

您是否尝试过在根vue实例中添加var VueResource = require('vue-resource');?还要添加Vue.use(VueResource)

票数 3
EN

Stack Overflow用户

发布于 2016-06-22 20:50:02

使用Vue.use(VueResource)main.js中添加插件后,它会将$http属性添加到所有Vue实例中。你不需要在你的组件文件中重做。然后您只需使用this.$http

代码语言:javascript
复制
    created: () => {
        this.$http.get('/my/api/123',
            //...
        );
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37968135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档