首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vue.Js -无法在组件上使用Firebase函数

Vue.Js -无法在组件上使用Firebase函数
EN

Stack Overflow用户
提问于 2017-09-25 19:05:30
回答 1查看 1.2K关注 0票数 1

我正在使用Vue资源将我的web应用程序中的数据发布到防火墙。但是,我刚刚发现,我需要使用firebase集成来上传图像到防火墙存储中。因此,我将其集成到src/main.js中。

代码语言:javascript
复制
import Vue from 'vue'
import VueResource from 'vue-resource'
import VueRouter from 'vue-router'
import * as firebase from 'firebase'
import App from './App.vue'
import Routes from './routes'

Vue.use(VueResource);
Vue.use(VueRouter);

const router = new VueRouter({
  routes: Routes,
  mode: 'history'
});

new Vue({
  el: '#app',
  render: h => h(App),
  router: router,
  created () {
    firebase.initializeApp({
      apiKey: 'AIzaSyDhdEhcLPfGqo5_msnhVKWH9BkZNOc6RYw',
      authDomain: 'nots-76611.firebaseapp.com',
      databaseURL: 'https://nots-76611.firebaseio.com',
      projectId: 'nots-76611',
      storageBucket: 'gs://nots-76611.appspot.com'
    })
  }
})

但是当我试图在组件的方法中使用它时:

代码语言:javascript
复制
methods: {
    post: function(){
      //for(var i = 0; i < this.tailors.length; i++){
      //  if(this.$route.params.id == this.tailors[i].id)
      //    this.ready_to_wear.tailor_name = this.tailors[i].tName;
      //}
      //this.$http.post('https://nots-76611.firebaseio.com/ready_to_wear.json', this.ready_to_wear);
      let key
      firebase.database().ref('ready_to_wears').push(this.ready_to_wear)
        .then((data) => {
          key = data.key
          return key
        })
        .then(key => {
          const filename = this.image.name
          const ext = filename.slice(filename.lastIndexOf('.'))
          return firebase.storage().ref('rtws/' + key + '.' + ext).put(this.image)
        })
        .then(fileData => {
          imageUrl = fileData.metadata.downloadURLs[0]
          return firebase.database().ref('ready_to_wears').child(key).update({rtwImg: imageUrl})
        });
    }
}

。。它在控制台日志中说,'firebase' is not defined

我猜想即使在main.js中集成了firebase函数,也不能在组件中使用它

如何在组件中使用它?还有别的办法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-25 19:10:48

您似乎没有使用VueFire,我认为它通过Vue prototype属性将firebase公开为$firebase。但是,您可以自己手动完成。

代码语言:javascript
复制
import Vue from 'vue'
import VueResource from 'vue-resource'
import VueRouter from 'vue-router'
import * as firebase from 'firebase'
import App from './App.vue'
import Routes from './routes'

Vue.prototype.$firebase = firebase

在此之后,每个Vue或组件都将以this.$firebase的形式提供firebase。

代码语言:javascript
复制
methods: {
    post: function(){
        this.$firebase.database().ref() ... etc ...
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46412455

复制
相关文章

相似问题

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