0

我引入了一个数组(联系人)并在选项标记中对其进行迭代,如果数组联系人 id 等于 selected_contact,我将显示为选中。这工作正常,但我想将新选择的选项绑定到数据以添加新活动,但它不起作用。我究竟做错了什么?

<select v-model="selected" class="border py-2 px-3 text-grey-800 w-full" name="contact_id">
                   

  <option v-for="contact in contacts" v-bind:selected="contact.id === selected_contact">{{contact.name}}
  </option>

</select>

这是我在 data() 中的内容

data() {
            return {
                name: '',
                selected: '',
                activity_type_id: '',
                comments: ''
            }
        },

然后我试图用这个 onclick 发送它:

<div class="px-8 py-4 border-gray-200 flex items-center">
          <button @click="addActivity" class="bg-teal-300 hover:bg-teal-800 text-white font-bold py-2 px-4 rounded ml-4 mt-3 mr-15">Add Activity</button>
   
        </div>

使用下面的 addActivity 函数:


 addActivity(){

                    let activityAdd = {
                           comments: this.comments,
                           contact_id: this.selected,
                           activity_type_id: this.activity_type_id,
                        }
                        console.log(activityAdd);
                        this.$inertia.post('/activity', activityAdd)
                    },
4

1 回答 1

0

通过绑定价值

<template>
  <div>
    <select v-model="selected" class="border py-2 px-3 text-grey-800 w-full" name="contact_id">
      <option
        v-for="contact in contacts"
        :key="contact.id"
        :value="contact.id"
      >{{contact.name}}</option>
    </select>
  </div>
</template>

使用计算属性

<template>
  <div>
    <select v-model="selected" class="border py-2 px-3 text-grey-800 w-full" name="contact_id">
      <option v-for="contact in contacts" :key="contact.id">{{contact.name}}</option>
    </select>
  </div>
</template>

Selected 是一个对象,因此您可以像这样初始化它:

 data() {
    return {
      name: "",
      selected: {},
      activity_type_id: "",
      comments: "",
    };
  },

您可以使用计算属性来获取 id:

 computed: {
    selectedID: function () {
      return this.selected.id;
    },
  }

方法变为:

  methods: {
    addActivity() {
      let activityAdd = {
        comments: this.comments,
        contact_id: this.selectedID,
        activity_type_id: this.activity_type_id,
      };
      this.$inertia.post("/activity", activityAdd);
    },
  },
于 2020-12-07T15:49:18.097 回答