javascript - 在使用 Vue.js 加载数据之前阻止显示组件

标签 javascript vue.js

警告:我对 Vue 非常陌生。

我正在使用它构建一个小型表单小部件,可以为我的客户嵌入各种站点。我的每个客户都可以自定义表单,所以我使用 vue-form-generator包从我的 API 加载自定义模式,然后生成表单。

我已经得到它来加载数据,但我不确定如何推迟该组件的加载,直到数据加载完成。我尝试使用 v-if,但该属性似乎绑定(bind)到 data,这是我进行数据加载的地方。

<template>
  <div id="app">
    <vue-form-generator  v-if="loaded" :schema="schema" :model="model" :options="formOptions"></vue-form-generator>
  </div>
</template>

<script>
  import Vue from 'vue'
  import VueFormGenerator from 'vue-form-generator/dist/vfg-core.js'
  import 'vue-form-generator/dist/vfg-core.css'

  Vue.use(VueFormGenerator)

  export default {
    name: 'app',

    data: function () {
      return fetch('http://localhost:3000/forms')
        .then(function (response) {
          loaded = true;
          return response.json()
        }).then(function (json) {
          return json
        }).catch(function (ex) {
          console.log('parsing failed', ex)
        })
    }
  }
</script>

这里有更好的方法吗?

谢谢!

最佳答案

当数据方法需要返回一个普通的 javascript 对象时,您将返回一个 promise 作为您的数据。

相反,您可能会这样做。

export default {
    name: "app",
    data(){
        return {
            loaded: false, 
        }
    },
    created(){
        fetch('http://localhost:3000/forms')
          .then(function (response) {
             return response.json()
           }).then(function (json) {
             this.loaded = true;
             // set other values from json
           }.bind(this)).catch(function (ex) {
             console.log('parsing failed', ex)
           })
    }

}

关于javascript - 在使用 Vue.js 加载数据之前阻止显示组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44250106/

相关文章:

javascript - .val().trigger ('change' ) 实际上在做什么?

javascript - 如何在vue-panzoom中实现zoomIn和zoomout

javascript - 用鼠标滚轮控制页面滚动动画

javascript - 使用@keyframes 以不透明度淡出时,如何使用事件重复动画?

javascript - 防止在文本区域中换行

javascript - 在 vue.js 中获取 FormData 中的 null 值

javascript - 如何覆盖 vue.js 中的全局变量?

javascript - Vuejs 在渲染数据之前同步请求

javascript - 草皮缓冲区传单geojson ajax

javascript - 如何使用 jQuery(或纯 JS)替换文本而不破坏任何事件?