나는 비슷한 일을 프로젝트를 가지고있다. 여기에는 몇 가지 핵심 필드가 있지만 사용자가 자체 필드를 추가 할 수 있으며이 필드는 모두 동적으로 렌더링됩니다. 우리는 4 개의 열이있는 section_schema 테이블에 json으로 필드를 저장합니다 : | id | section_name | 스키마 | disable
스키마에는 동적 양식을 렌더링하는 데 필요한 모든 것이 포함되어 있습니다. 우리의 핵심 데이터를위한 특정 포맷팅은 약간 어색하지만 꽤 잘 작동합니다. 내가 너무 오래 걸리기를 원하지 않기 때문에 우리가 백 엔드에서하는 준비를 생략했습니다. section_schema에서
기본 JSON : VUE 구성 요소의
{
"Company Name":{
"cols":"8",
"field_name": "company_name",
"type":"string",
"order":"0",
"required":"1"
},
"Member Type":{
"cols":"4",
"field_name": "member_type",
"type":"dropdown_fromdata",
"order":"1",
"required":"1",
"dropdown":{"table" : "membershipType", "field": "name"}
},
"Website":{
"cols":"4",
"field_name": "company_website",
"type":"string",
"order":"2",
"required":"0"
},
... others
:
<div class="col-sm-6" v-for="v in dataType">
<div class="white-box">
<h3 class="box-title">{{v.section_name}}</h3>
<form class="form-material form-horizontal m-t-30" :id="v.section_id">
<input type="hidden" :value="v.section_id" id="type" name="type">
<div class="form-group" v-for="i in v.field_data">
<label class="col-md-12" :for="i.id">{{i.name}}</span></label>
<div class="col-md-12">
<select v-if="i.id === 'company_info-member_type'" class="form-control" style="width: 100%;" size="1" :value="i.value" :id="i.id" :name="i.id">
<option value="" selected disabled>Please select</option>
<option v-for="mt in membershipTypes" :value="mt.name">{{mt.name}}</option>
</select>
<select v-else-if="i.id === 'company_info_status'" class="form-control" style="width: 100%;" size="1" :value="i.value" :id="i.id" :name="i.id">
<option value="" selected disabled>Please select</option>
<option v-for="status in statuses" :value="status.name">{{status.name}}</option>
</select>
<datepicker v-else-if="i.id === 'company_info-anniversary'" :format="format" :value="setDate(i.value)" :id="i.id" :name="i.id"></datepicker>
<input v-else-if="i.type == 'phone'" :type="i.type" :id="i.id" :name="i.id" class="form-control" :placeholder="i.name" :value="i.value" data-mask="(999) 999-9999">
<input v-else :type="i.type" :id="i.id" :name="i.id" class="form-control" :placeholder="i.name" :value="i.value">
</div>
</div>
<button @click.prevent="saveMemberChanges(v.section_id)" class="btn btn-info waves-effect waves-light m-r-10">Submit</button>
</form>
</div>
</div>
편집 : 추가 정보를
이
우리의 데이터 :
data() {
return {
dataType: [],
}
},
methods: {
getDataTypes: function(){
var id = this.member.id
this.$http.get('/member/details/json/'+id).then((response) => {
var data = response.data
this.dataType = data
}, (response) => {
...
});
},
}
그건 다음은 그 기본이다 내가 누군지 몰라서 말하기 힘들다. 귀하의 데이터의 구조와 API에서 어떤 양식 필드를 보내고 있습니다.하지만 당신은 API에서 데이터를 가져 오는 것입니다 물론 당신은 동적으로 데이터 개체 모델에 저장됩니다. 그럼 당신은 배열에서 응답에서 각 개체를 반복 할 수 있습니다 그리고 동적으로 각 값에 대한 모델을 지정하십시오 - 입력 필드 - 여기를보십시오 http://jsbin.com/kugazopuwu/1/edit?html,js,console,output 미안하지만, 당신의 문제를 잘 이해하길 바랍니다. –
안녕하세요. 응답 - VueJS를 사용하여 모든 양식 요소를 렌더링하지만 답변은 훌륭합니다. 불행히도 보안 및 대기 시간 때문에 모든 현장 생성은 Laravel의 블레이드 템플릿을 통해 수행되어야합니다. – Oxid3
흠 .. v-model = "form.item.item2"http://jsbin.com/laduyaqumi/edit?html,js,console,output에 어떤 오류도 보이지 않습니다. –