2016-12-09 6 views
0

私は、賞賛される入力コントロールの一種であるコンポーネントに取り組んでいます。これは、ブートストラップグリッドを持つフォームの繰り返しのHTMLをたくさん保存します(それぞれにラベルを付け、 'for'属性を入力に「フォームコントロール」クラスを割り当てます)。考えられるのは、コンポーネントに既定値(フォームコントロールクラスなど)が既に設定されている、プレフィックス付きのラベルなどの入力コントロールが含まれているということです。すべてのコンポーネントプロパティ(vue.js)を明示的に宣言する必要はありますか?

HTMLの 'input'これらのうちの1つまたは複数を使用することができれば、コンポーネントのプロパティで、これらのすべてを実際に宣言する必要がありますか。これはちょっとした迷惑で、真実であればかなり面倒です。明示的に宣言されていないすべての属性が単にコンポーネントの有効範囲内で利用可能になった場合は便利です。

これは、私が想像していることですが、これには別の方法があるという共通の要件がありますか?

+0

私は、あなたが 'inputAttrs'という名前の' prop'という名前のものがあればあなたは ''を実行することができます。 –

答えて

1

すべてを宣言する必要はありません。v-bindを使用して、オプションの属性のオブジェクトをバインドできます。だから、あなたが行うことができますあなたの親で:

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

次に、あなたのコンポーネントに簡単に小道具として追加:

props: { 
    optionalAttrs: {} 
} 

そして、あなたのコンポーネントにあなたの入力にv-bindを使用します。

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

ここにJSFiddleがあります:https://jsfiddle.net/rww551og/

+0

私はそのアプローチを自分自身で探求し始めたばかりなので、実行可能であることがわかりました。ありがとう! –

1

使用できるすべての小道具を宣言する必要がありますが、必要なものだけにREQUIRE:TRUEを追加する必要があります。それで全部です。

+0

OKだから、私が望むことをするのは面倒だということが正しい。 HTML入力タグには30以上の属性があります。私のコンポーネントのプロパティでこれらのすべてを宣言しなければならないのは、実際にはそれほど時間がかからなくても、悪いデザインのように感じるからです。 –

関連する問題