Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vuejs2 在发生任何其他事情之前检索文件_Vuejs2 - Fatal编程技术网

Vuejs2 在发生任何其他事情之前检索文件

Vuejs2 在发生任何其他事情之前检索文件,vuejs2,Vuejs2,我正在创建一个简单的SPA,它将从API检索数据。页面本身由一个单独的后端进程提供服务,该进程是唯一知道API地址的实体。因此,它还提供了一个端点,其中包括返回API URL的端点: { "api_url_base": "http://api.example.org/v1" } 这是必要的,因为整个系统部署在多个我们无法控制DNS记录的站点上,从前端应用程序派生API URL可能很容易,也可能不容易 现在我需要编写我的Vue应用程序,以便在获取并处理此文件之前不会发生任何事情。为了实现这一点,

我正在创建一个简单的SPA,它将从API检索数据。页面本身由一个单独的后端进程提供服务,该进程是唯一知道API地址的实体。因此,它还提供了一个端点,其中包括返回API URL的端点:

{
"api_url_base": "http://api.example.org/v1"
}
这是必要的,因为整个系统部署在多个我们无法控制DNS记录的站点上,从前端应用程序派生API URL可能很容易,也可能不容易

现在我需要编写我的Vue应用程序,以便在获取并处理此文件之前不会发生任何事情。为了实现这一点,我在应用程序的
beforeMount
方法中添加了:

this.settings = axios.get('/settings.json');
在安装前的我的组件

var comp = this;
app.__vue__.settings.then((response) => {comp.url = response.data.api_url;});
然而,组件的
在安装之前
通常在应用程序之前运行,并且
应用程序__当我在安装前到达组件的
时,vue\uuuuu.settings
未定义的


我哪里出错了?是我把东西放错地方了,还是我的方法完全错了?

您可以在安装vue应用程序之前获取数据

axios.get('/settings.json').then(response => {
  // do something with response

  new Vue({
    router,
    store,
    render: h => h(App)
  }).$mount('#app')
}
一种方法(如前一个答案中所建议的)是在做任何事情之前再打一个电话。然而,它也带来了许多负面影响

我只想说,它会冻结应用程序的加载,直到收到响应为止

有希望,因为你可以巧妙地使用(f.e.)良好的ol依赖注入将所需数据传递给你的应用程序


这篇文章完整地回答了这个问题:

您是否早在创建之前就尝试过这样做?看一看您的第一个关注点是无关的,因为这正是我想要的:在收到文件之前不要做任何事情。如果无法获取文件,应用程序会显示错误消息。