Когда пользователь выбирает машину, я получаю идентификатор машины. Из этого идентификатора мне нужно получить марку и модель машины.
<ul class = "list-unstyled">
<li>
<div v-for = "dosimeter in dosimeters">
<label>
<input type = "radio" name = "optDosimeter" v-model = "dosimeter_id" :value = "dosimeter.id" v-on:click = "dosimeter_select">{{dosimeter.nickname}}
</label>
</div>
</li>
</ul>
Vue.js
export default {
data: function() {
return {
dosimeters:[],
dosimeter_id:''
}
},
mounted(){
axios.get('/dosimeters').then((response) => {
this.dosimeters=response.data;
});
},
methods: {
dosimeter_select(){
not sure what to put here
}
}
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


я думаю, вы должны сделать что-то вроде:
dosimeter_select(){
let found= this.dosimeters.find(d=>{
return d.id==this.dosimeter_id
});
console.info(found.make);
console.info(found.model);
}
попробуйте использовать событие on:input вместо лайка <input type = "radio" name = "optDosimeter" v-model = "dosimeter_id" :value = "dosimeter.id" v-on:input = "dosimeter_select">{{dosimeter.nickname}}
Это не помогло. Кажется, что метод останавливается при возврате.
попробуй это
dosimeter_select()
{
let machine = this.dosimeters.find(dosimeter => dosimeters.id===this.dosimeter_id);
// now you have the machine object
}
Будет ли это правильным способом доступа к объекту? this.dosimeter_model = машина.модель;
он должен работать:
new Vue({
el: "#app",
data: {
dosimeters:[
{ id: 1, name: 'foo' },
{ id: 2, name: 'bar' }
]
},
methods: {
dosimeterSelected (selectedDosimeter) {
console.info(`i doing something with dosimeter.id: ${selectedDosimeter.id}`)
}
}
})<script src = "https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id = "app">
<ul class = "list-unstyled">
<li v-for = "dosimeter in dosimeters">
<div>
<label>
<input type = "radio" name = "optDosimeter" :value = "dosimeter.name" v-on:click = "dosimeterSelected(dosimeter)">{{dosimeter.name}}
</label>
</div>
</li>
</ul>
</div>Я внес некоторые изменения, теперь это работает. Я воспользовался предложением Буссаджры Брахима:
dosimeter_select(){
let found= this.dosimeters.find(d=>{
return d.id==this.dosimeter_id
});
console.info(found.make);
console.info(found.model);
}
и вместо того, чтобы использовать переключатели, я сделал это раскрывающимся списком. Кроме того, вместо запуска метода с помощью @click я использовал @change.
Я попробовал ваше предложение, и оно работает, но для этого требуется два клика. Первый щелчок говорит «не определено», а затем, выбирая другой переключатель, я получаю марку и модель, как и ожидалось. Любые идеи?