【问题标题】:Vue Froala dynamic config optionsVue Froala 动态配置选项
【发布时间】:2021-03-17 10:19:24
【问题描述】:

我正在使用 Vue Froala 使用 Froala 配置选项进行图像上传,这些选项基本上是添加到 Vue 数据属性的对象。像这样的:

data() {
    return {
        config: {
            imageUploadURL: '/api/image/store',
            imageUploadParam: 'image',
            imageUploadParams: {id: this.id} //this is the dynamic ID
        }
    }
}

当我上传图片并触发这些配置选项时,我尝试传递的 ID 始终是 undefined。我猜这是因为当我第一次加载页面时,Vue 数据属性在一开始就被初始化,而我从 prop 中检索的动态 ID 尚不可用。

我尝试为数据属性 imageUploadParams 分配一个计算属性,该属性将返回 ID 但仍然是 undefined

如果我之后使用观察者分配 ID,我会得到 null。这是我在 POST 代码中得到的 (php)

+request: Symfony\Component\HttpFoundation\ParameterBag {#45
  #parameters: array:1 [
    "id" => null
  ]
}

有什么想法吗?

【问题讨论】:

    标签: javascript vue.js vuejs2 vue-component froala


    【解决方案1】:

    您可以使用手表:

    data() {
      return {
        config: {
          imageUploadURL: '/api/image/store',
          imageUploadParam: 'image',
          imageUploadParams: { id: '' }
        }
      }
    },
    watch: {
      id(value) {
        this.config.imageUploadParams.id = value;
      }
    }
    

    现在每当id 更改时,config.imageUploadParams 就会被设置。

    在 JavaScript 中分配变量会在分配时设置值。由于您的 id 在分配时为空,因此没有参考可用于以后访问未来的异步属性。出于同样的原因,分配一个计算值也无济于事。

    watch 用于异步,computed 用于同步是一个很好的一般规则

    从聊天中编辑

    似乎<froala> 无法响应您的反应数据,并且仅使用初始配置值。在组件上放一个v-if="id",以防止在id准备好之前创建它:

    <froala v-if="id">
    

    【讨论】:

    • 您的解决方案很有意义,但由于某些原因,如果我使用观察者,我会得到空值。我什至尝试在观察者内部传递一个静态值,只是为了测试它,但我仍然在 POST 中得到 null。但是,如果我在分配它之后立即 console.log imageUploadParams,从观察者内部,它就可以工作。这可能是范围问题吗?
    • 我应该更具体一些。您能否使用config 属性在发送帖子请求的位置显示 javascript 代码
    • 所以基本上,Froala 是一个 HTML 编辑器,当我从我的文件系统上传图像时,Froala 会触发这些参数并使用 imageUploadURL 进行 API 调用。我不需要其他任何东西。 imageUploadParams 在 API 调用期间传递对象,并且图像正在通过编辑器上传。但由于某些原因,它填充为空。当然,如果我在数据属性上传递一个静态 ID,那么它就可以工作。
    • 我明白了。你能展示你如何使用 Froala 吗?听起来它不知道您的反应数据。我会看一下文档。您还可以通过将{{ config }} 放在模板中的任何位置来测试手表是否正常工作
    • 我制作了这个沙盒。不确定如何 console.log api 调用。 codesandbox.io/s/rough-tree-rmrje?file=/src/components/…
    猜你喜欢
    • 1970-01-01
    • 2021-09-19
    • 2020-06-07
    • 1970-01-01
    • 1970-01-01
    • 2019-07-05
    • 2019-06-29
    • 2019-09-03
    • 2017-01-30
    相关资源
    最近更新 更多