передача переменной из контроллера в vue?
Я хочу восстановить с помощью функции моего контроллера среднее значение задач каждого проекта, который я пробую, но это не сработало, он показывает 0. Есть помощь, ребята? (проблема в файле project.vue) это функция прогресса, которая возвращает среднее значение задач каждого проекта:
public function progress($id){
$tasks=Task::where(['projet_id'=>$id])->get();
$x=0;
$i=0;
foreach ($tasks as $task) {
$x = $x + $task->progress;
$i++ ;
}
$progress=$x/$i;
return $progress;
}
и здесь я хочу показать прогресс в project.vue:
<tr v-for="projet in projets.data" :key="projet.id" >
<td @change="avancemant(projet.id)">
{{ parseInt(100 * progress ) }}%
<img :src="`/img/icon/verif.png`" style="width:15px;
v-if="`${parseInt(100*progress)}`==100" >
</img>
<div class="progress">
<div class="progress-bar bg-success" role="progressbar" aria-valuenow="0"
id="progress" v-model="form.progress"
aria-valuemin="`${parseInt(100*task.progress)}`":style="
{'width':`${parseInt(100*progress)}%`}" aria-valuemax="100">
</div>
</div>
</td>
а это мой скрипт project.vue:
export default {
data(){
return{
progress:'',
projets:{},
projet:{
id:''
},
}}
created(){
}
methods:{
avancemant($id){
axios.get('/api/progress/'+$id).then(({data})=>(this.progress =data.data));;
},
}
1 ответ
Есть несколько проблем. А<td>
Тег не запускает событие изменения.
Даже если вы настроите его для прослушивания обновлений, вы столкнетесь с проблемой бесконечного цикла.
Вам также нужен способ хранения различных значений прогресса.
Вы можете обновить projets
объект вроде этого:
avancemant(id){
axios.get('/api/progress/'+id).then(
({data}) => (this.projets.data[id].progress = data.data)
)
}
И вызовем его с установленного крючка так:
mounted () {
Object.values(this.projets.data).forEach(function(x){
this.avancemant(x.id)
})
}
Конечно, это сработает только один раз. Другой вопрос - заставить его стрелять несколько раз в зависимости от уровня прогресса.