我是否需要显式声明所有组件属性(vue.js)?

时间:2016-12-09 11:27:47

标签: vue.js

我正在开发一个组件,这是一种美化的输入控件,它将使用Bootstrap网格保存大量重复的表单HTML(必须在每个表格旁边放置一个标签,分配一个&# 39;对于它的属性,为输入分配一个“表格 - 控制”类等。我们的想法是组件包含一个输入控件,其默认值(例如' form-control'类)已经设置,标签前置等等。

HTML'输入'控制作为一大堆可选属性,其中一些我可能希望在某些时候使用 - 只读,禁用,占位符等。我实际上必须事先声明所有这些,就像它在我的组件中一样。 s属性,如果我可以使用其中一个或多个?如果这是真的,这有点令人讨厌而且相当麻烦。如果所有未明确声明的属性只是在组件的范围内可用,那将会很方便。

我想,这是一个足够普遍的要求,可能还有另一种方法吗?

2 个答案:

答案 0 :(得分:1)

您必须申报所有可以使用的道具,但您必须在需要的地方添加REQUIRE:TRUE。就是这样。

答案 1 :(得分:1)

You don't need to declare all of them, you can use v-bind to bind an object of optional attributes. So, in your parent you can do:

<custom-input :optional-attrs="{placeholder: 'Type something!'}"></custom-input>

Then in your component simply add it as a prop:

 props: {
   optionalAttrs: {}
 }

And use v-bind on your input in your component:

<input type="text" class="form-control" v-bind="optionalAttrs">

Here's the JSFiddle: https://jsfiddle.net/rww551og/