Я новичок в Vue JS, создаю приложение с Laravel Spark и стараюсь максимально использовать Vue.
У меня есть форма, чтобы просто добавить «Тип актива» с компонентом. После успешного создания типа актива список свойств берется из базы данных и устанавливается для атрибута «данные». На мой взгляд (я использую встроенный шаблон), у меня есть 'v-for', который создает форму для каждого свойства с двумя скрытыми входами для идентификатора свойства и идентификатора типа, а также одну кнопку «Добавить», которая назначает свойство к вновь созданному типу.
ПРОБЛЕМА: я не могу присвоить значение скрытых входов в представлении при использовании v-моделей. Когда я отправляю одну из форм, данные запроса формы всегда возвращают начальное значение данных из нового объекта SparkForm.
Другими словами, мне нужно назначить скрытые входные значения в цикле v-for в представлении.
Вот мой компонент:
Vue.component('new-asset-type', {
props: [],
data() {
return {
// type_id: this.type_id,
properties: this.properties,
newAssetType: new SparkForm({
label: null,
enabled: false,
}),
assignPropForm: new SparkForm({
prop_id: "",
type_id: "",
}),
};
},
methods: {
createType: function () {
Spark.post('/asset-types', this.newAssetType)
.then(response => {
this.type_id = response.type_id;
axios.get('/getTypeNotProps/' + this.type_id).then((response) => {
this.properties = response.data;
console.log(this.properties);
});
})
.catch(response => {
console.log("fail");
});
},
assignProp: function () {
Spark.post('/asset-properties/add', this.assignPropForm)
.then(response => {
console.log(response);
})
.catch(response => {
console.log("fail");
});
}
}
});
И вот мой взгляд:
@extends('spark::layouts.app')
@section('content')
<new-asset-type inline-template>
<div class="container">
<!-- Application Dashboard -->
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="panel panel-default">
<div class="panel-heading">Add a New Asset Type</div>
<div class="panel-body" id="addTypeForm">
<div class="form-horizontal">
<div class="form-group" :class="{'has-error': newAssetType.errors.has('label')}">
{{ Form::label('label', 'Label', ['class' => 'col-md-4 control-label']) }}
<div class="col-md-6" >
<input type="test" name="label" v-model="newAssetType.label">
<span class="help-block" v-show="newAssetType.errors.has('label')">
@{{ newAssetType.errors.get('label') }}
</span>
</div>
</div>
<div class="form-group">
{{ Form::label('enabled', 'Enabled?', ['class' => 'col-md-4 control-label']) }}
<div class="col-md-6">
<input type="checkbox" name="enabled" v-model="newAssetType.enabled" >
</div>
</div>
<!-- Submit -->
<div class="form-group">
<div class="col-md-8 col-md-offset-4">
<button class="btn btn-primary" @click="createType" :disabled="newAssetType.busy">
Create Asset Type
</button>
</div>
</div>
<div id="assignProps" v-if="newAssetType.successful">
<!-- Button trigger modal -->
<button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
Add Property
</button>
<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="myModalLabel">Add New Property to Asset Type</h4>
</div>
<div class="modal-body">
<assign-asset-prop v-for="property in properties" class="panel panel-info property-item">
<div class="panel-heading">@{{ property.label }}</div>
<div class="panel-body"><strong>Input Type: </strong>@{{ property.input_type }}
<div class="pull-right">
<input type="hidden" name="prop_id" v-bind:value="property.p_id" v-model="assignPropForm.prop_id">
<input type="hidden" name="type_id" v-bind:value="property.p_id" v-model="assignPropForm.type_id">
<button class="btn btn-primary" @click="assignProp" :disabled="assignPropForm.busy">
Add
</button>
</div>
</div>
</assign-asset-prop>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</new-asset-type>
@endsection
v-model
в скрытых полях; они не испускают изменений. У вас уже естьvalue
привязка, но странно, что вы используете одно и то же значение для обоих полей. - person Roy J   schedule 24.03.2017v-bind:propvalue="property.p_id"
в моем скрытом вводе иassignPropForm: new SparkForm({ propvalue: null })
в данных моих компонентов, но, похоже, он по-прежнему не обновляет переменнуюpropvalue
с начального значения null. - person cmcg182   schedule 24.03.2017