私は、私が使用しているWebアプリケーションでたくさんのフォームを作成しています。そのために私はVueを使用していますので、私は使用できる汎用入力コンポーネントを作成しようとしています全体を通して。私はブートストラップ・グリッドを使用しているので、コンポーネントはv-モデルとして使用するためにコンポーネントに複数の列、ラベル、名前、およびプロパティを渡すことができるはずです。親のコンポーネントが再レンダリングされるたびに値が上書きされるので、小道具を直接変更することは避けてください。[Vue警告]:小道具を変更すると問題に遭遇しています。代わりに、小道具の値に基づいてデータまたは計算されたプロパティを使用します。プロットが突然変異している:「モデル」 (コンポーネントにあります)。ここ は(簡略化した形で)テンプレートです:汎用入力コンポーネントを作成しようとしています
Vue.component('field', {
template: '#field',
props: ['cols','label','group','name','model'],
computed:{
colsClass:function(){
return "col-xs-"+this.cols
}
,
labelText:function(){
if(this.label) {
return this.label
} else {
return _.startCase(this.name);
}
}
}
});
これは、別の '編集製品' コンポーネント内から使用され、:
<template id="field">
<div v-bind:class="colsClass">
<div class='form-group form-group-sm'>
<label v-bind:for="name">{{labelText}}</label>
<input v-bind:id='name' ref="input" class='form-control' v-bind:name='name' v-model='model'/>
</div>
</div>
そして、ここでは(再び、簡略化)JSです
<field :cols="8" name="name" :model="product.name"></field>
これはOKと表示されますが、エラーをスローしますely、warning)フィールドの値を編集します。だから私は何が間違っているの?