vue.js - 将属性默认值注入(inject)第 3 方 Vue 组件

标签 vue.js vuejs2 vue-component

我在我的项目中使用日期选择器组件。基本用法如下:

date-picker(language="fr" v-model="date")

每次我们需要使用日期选择器时,都有几个属性会重复:例如语言

所以我希望能够在需要日期选择器时简单地做到这一点。

date-picker(v-model="date")

对于第 3 方库的 language 属性,默认为 fr

这是我尝试过的:

  • 扩展 Datepicket 组件的自定义组件:不太好,因为我需要定义一个包含原始日期选择器组件的模板。这意味着一个多余的包装组件
  • 插件?我只能将属性注入(inject)到全局 Vue 实例中。 (对 Vue 相当陌生)
  • Mixin 不适用,因为我需要更改第 3 方组件

最佳答案

不确定您如何扩展该组件。但这应该够优雅了吧?

例如

Vue.component("extended-datepicker", {
  extends: vuejsDatepicker,
  props: {
    format: {
      default: "yyyy MMM(MM) dd"
    },
    language: {
        default: fr
    }
  }
});

演示:https://jsfiddle.net/jacobgoh101/5917nqv8/2/


更新“需要单个文件组件提供模板标签”的问题

Vue 组件本质上是一个具有某些属性的 JavaScript 对象。

您并不总是需要使用 .vue 单文件组件。在这种情况下,您只需创建一个导出对象的 .js 文件即可。

例如这个 ExtendedDatepicker.js 将是一个有效的 Vue 组件

import Datepicker from "vuejs-datepicker";

export default {
  extends: Datepicker,
  props: {
    format: {
      default: "yyyy MMM(MM) dd"
    }
  }
};

演示:https://codesandbox.io/s/9kn29053r

关于vue.js - 将属性默认值注入(inject)第 3 方 Vue 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52591236/

相关文章:

vue.js - 如何测试 vue vuetify v-autocomplete

vue.js - 为什么我不能在我的 Vue 应用程序上使用调试器或 console.log

javascript - VueJS 嵌套构建器示例

javascript - Vuejs将多选改为简单选择

javascript - vue 中对象属性变为空白

laravel - 使用 axios vuejs 和 laravel 验证表单

javascript - Vue.js 不渲染组件

javascript - 如何使用 JSFiddle 在浏览器中计算所有具有很大最大值的素数

javascript - 如何使用vue js在前端显示错误信息?

vue.js - 如何在 vue.js 中通过点击事件发出一个值