如何从使用 Adonis 控制器的路由在 Vue 组件中发出 axios 请求
How do I make an axios request in a Vue component from a route made using an Adonis controller
我有一个 WidgetController.js
文件可以对数据库执行 CRUD 操作。这个控制器有一个 * create (request, response)
method/generator,基本上 returns 一个包含小部件属性的响应,并且还向数据库添加一行 widgets
table。路由定义为 Route.any('widgets/create', 'WidgetController.create').as('widgets.create').middleware('auth');
。我希望create
通过点击前端的按钮触发,我尝试在Vue中正常导入:
<template>
<div>
<button @click="createWidget">Click me</button>
</div>
</template>
<style></style>
<script type="text/javascript">
import WidgetController from '/path/to/WidgetController.js';
export default{
name: 'widget',
data () {
return{
WidgetCtrl: WidgetController
}
},
methods: {
createWidget () {
return this.WidgetCtrl.create();
}
}
}
</script>
但它不起作用可能是因为依赖项和函数是 Adonis 独有的且未在 Vue 中定义。我了解到 axios
也许可以做我想做的事。怎么会?
您无法从客户端导入或访问服务器端的 js 文件。
当您尝试从 vue.js
导入阿多尼斯的 WidgetController.js 时
您必须在 'createWidget' 函数中发出 HTTP 请求并将其指向 WidgetController.create 方法。
Vue 的组件文件:
<template>
<div>
<button @click="createWidget">Click me</button>
</div>
</template>
<script type="text/javascript">
export default{
name: 'widget',
data () {
return{
WidgetCtrl: WidgetController
}
},
methods: {
createWidget () {
axios.get('/url-point-to-WidgetController.create')
.then(response => {
// do other stuff
});
}
}
}
</script>
阿多尼斯的WidgetController.js:
'use strict'
class WidgetController {
* create(request, response) {
// save widget...
}
}
module.exports = WidgetController
我有一个 WidgetController.js
文件可以对数据库执行 CRUD 操作。这个控制器有一个 * create (request, response)
method/generator,基本上 returns 一个包含小部件属性的响应,并且还向数据库添加一行 widgets
table。路由定义为 Route.any('widgets/create', 'WidgetController.create').as('widgets.create').middleware('auth');
。我希望create
通过点击前端的按钮触发,我尝试在Vue中正常导入:
<template>
<div>
<button @click="createWidget">Click me</button>
</div>
</template>
<style></style>
<script type="text/javascript">
import WidgetController from '/path/to/WidgetController.js';
export default{
name: 'widget',
data () {
return{
WidgetCtrl: WidgetController
}
},
methods: {
createWidget () {
return this.WidgetCtrl.create();
}
}
}
</script>
但它不起作用可能是因为依赖项和函数是 Adonis 独有的且未在 Vue 中定义。我了解到 axios
也许可以做我想做的事。怎么会?
您无法从客户端导入或访问服务器端的 js 文件。 当您尝试从 vue.js
导入阿多尼斯的 WidgetController.js 时您必须在 'createWidget' 函数中发出 HTTP 请求并将其指向 WidgetController.create 方法。
Vue 的组件文件:
<template>
<div>
<button @click="createWidget">Click me</button>
</div>
</template>
<script type="text/javascript">
export default{
name: 'widget',
data () {
return{
WidgetCtrl: WidgetController
}
},
methods: {
createWidget () {
axios.get('/url-point-to-WidgetController.create')
.then(response => {
// do other stuff
});
}
}
}
</script>
阿多尼斯的WidgetController.js:
'use strict'
class WidgetController {
* create(request, response) {
// save widget...
}
}
module.exports = WidgetController