Javascript Can';无法从js访问Vue
我正在尝试使用Vue和Vue ressource创建一个应用程序 实际上,我需要使用ressource通过API调用对系统进行身份验证。 但在我的Auth.js(我导入到我的login.vue)控制台中,他说他无法读取未定义的$http。很明显,我无法达到“这个”(所以vue)。 我错过什么了吗?或者这只是一个坏用途 谢谢大家 实际上我的main.js:Javascript Can';无法从js访问Vue,javascript,vue.js,vuejs2,vue-router,vue-resource,Javascript,Vue.js,Vuejs2,Vue Router,Vue Resource,我正在尝试使用Vue和Vue ressource创建一个应用程序 实际上,我需要使用ressource通过API调用对系统进行身份验证。 但在我的Auth.js(我导入到我的login.vue)控制台中,他说他无法读取未定义的$http。很明显,我无法达到“这个”(所以vue)。 我错过什么了吗?或者这只是一个坏用途 谢谢大家 实际上我的main.js: import Vue from 'vue' import VueRouter from 'vue-router' import VueReso
import Vue from 'vue'
import VueRouter from 'vue-router'
import VueResource from 'vue-resource'
Vue.use(VueRouter)
Vue.use(VueResource)
import App from './components/App.vue'
import Login from './components/Login.vue'
import Home from './components/Containers.vue'
function requireAuth (to, from, next) {
if (!auth.loggedIn()) {
next({
path: '/',
query: { redirect: to.fullPath }
})
} else {
next()
}
}
const router = new VueRouter({
mode: 'history',
routes: [
{ path: '/home', name: 'home', component: Home, beforeEnter: requireAuth },
{ path: '/', component: Login },
{ path: '/logout',
beforeEnter (to, from, next) {
auth.logout()
next('/')
}}
]
})
new Vue({
el: '#app',
router,
render: h => h(App)
})
登录名为login.vue
import auth from '../utils/auth'
export default {
data () {
return {
email: '',
pass: '',
error: false
}
},
methods: {
login () {
auth.login(this.email, this.pass, loggedIn => {
if (!loggedIn) {
this.error = true
} else {
console.log('good')
this.$router.replace('/home')
}
})
}
}
}
以及制作vue ressource帖子的my auth.js:
export default {
login (email, pass, cb) {
cb = arguments[arguments.length - 1]
if (localStorage.token) {
if (cb) cb(true)
this.onChange(true)
return
}
pretendRequest(email, pass, (res) => {
if (res.authenticated) {
localStorage.token = res.token
if (cb) cb(true)
this.onChange(true)
} else {
if (cb) cb(false)
this.onChange(false)
}
})
},
getToken () {
return localStorage.token
},
logout (cb) {
delete localStorage.token
if (cb) cb()
this.onChange(false)
},
loggedIn () {
return !!localStorage.token
},
onChange () {}
}
function pretendRequest (email, pass, cb) {
setTimeout(() => {
this.$http.post('localhost:9000/api/login', {email: email, password: pass}).then(response => {
if (response.status === 200) {
cb({
authenticated: true,
token: Math.random().toString(36).substring(7)
})
} else {
cb({ authenticated: false })
}
}, response => {
console.log('error ' + response.status)
})
}, 0)
}
axios.post
/axios.get
axios.post
/axios.get
有问题吗?请发表评论,我将进一步解释。1.感谢所有提示!2.我已经更改了axios,所以我不知道vue资源不再受支持。3.因此,如果我理解得很好,这不能将vue放入我的auth JS中,因为它的上下文不同?正确的?(如果你有解释的链接:)有问题吗?若它对你们有效,记得投票并接受答案。它可以让其他用户找到正确的答案等。是的,我按回车键快速:p只需查看我的第一条评论:)3。对确切地这都是关于背景的。作为初学者,在ES6中学习上下文是值得的。从模块(您已经在做)开始,然后学习箭头函数和类似的
let
。它会帮你很多。谢谢你的提示!2.我已经更改了axios,所以我不知道vue资源不再受支持。3.因此,如果我理解得很好,这不能将vue放入我的auth JS中,因为它的上下文不同?正确的?(如果你有解释的链接:)有问题吗?若它对你们有效,记得投票并接受答案。它可以让其他用户找到正确的答案等。是的,我按回车键快速:p只需查看我的第一条评论:)3。对确切地这都是关于背景的。作为初学者,在ES6中学习上下文是值得的。从模块(您已经在做)开始,然后学习箭头函数和类似的let
。这对你会有很大帮助