#php #laravel #vue.js
#php #laravel #vue.js
Вопрос:
У меня есть элемент select, и на основе выбора данные должны быть извлечены на основе выбранного идентификатора.
шаблон блейда
<div id="pers_obj" class="form-group form-duration-div">
{{Form::label("personal_objective", "Personal Objective/KPA")}}
<select name="personal_objective" id="personal_objective" v-model="personal_objective">
<option value="0" class="form-control">--Select Objective--</option>
@foreach($personal_objectives as $personal_objective)
<option value="{{ $personal_objective->id }}" class="form-control">{{ $personal_objective->name}}</option>
@endforeach
</select>
<div v-cloak>@{{personal_objective}}</div>
</div>`
measure.js
var pers_objective = new Vue({
el: '#pers_obj',
data:{
personal_objective: null
},
});
Как я могу:
- извлечение данных из базы данных с помощью vuejs
- отображение данных из базы данных с помощью vue js
Комментарии:
1. Покажите нам, как вы реализовали контроллер, обрабатывающий ajax-вызовы
Ответ №1:
Похоже, вы немного смешиваете код PHP и JavaScript, пытаясь на удачу. Лучший способ — создать ответ службы для достижения личных целей, таких как API.
Итак, предположим, что вы создаете контроллер, вызываемый, например, по /personal-objectives
адресу, который возвращает массив объектов со структурой { id: number, name: string }
Тогда ваш код для HTML будет выглядеть следующим образом:
<div id="pers_obj" class="form-group form-duration-div">
<select name="personal_objective" v-model="personal_objective">
<option value="0" class="form-control">--Select Objective--</option>
<option v-for="po in pos" value="@{{ po.id }}" class="form-control">@{{ po.name }}</option>
</select>
</div>
И ваш JavaScript (при условии, что вы используете библиотеку vue-resource для вызовов ajax), например:
var pers_objective = new Vue({
el: '#pers_obj',
data: function() {
return {
personal_objective: null,
pos: [];
};
}
created: function() {
this.loadPersonalObjectives();
}
methods: {
loadPersonalObjectives: function() {
this.$http.get('personal-objectives').then((response) => {
this.pos = response.data.pos;
}, (response) => {
console.log(response);
});
}
}
});
Приведенный выше код выполнит GET
вызов ajax при создании компонента, для /personal-objectives
которого будет возвращен массив объектов в формате JSON (не забудьте вернуть массив, закодированный таким образом, и установить соответствующий заголовок), который при ошибке будет отображен в консоли, а при последующем массив будет присвоен pos
переменной javascript и обновлен в HTML, реактивно создавая соответствующие опции!
Возможно, вам потребуется обновить URL-адрес, добавив root / в случае, если вы не настраиваете vue-ресурс с опцией root (Vue.http.options.root)