如何在 SweetAlert2 中使用 v-for

How to use v-for in SweetAlert2

this.$swal
.fire({
  title: '학교를 검색해주세요.',
  input: 'text',
  inputAttributes: {
    autocapitalize: 'off'
  },
  showCancelButton: true,
  confirmButtonText: '검색하기',
  cancelButtonText: '취소',
  icon: 'question',
  preConfirm: (school) => {
    return axios.get(`(serverIp)/school?query=${school}`)
      .then(response => {
        console.log(response.data.data.schools)
        this.$swal.fire({
          title:'학교를선택해주세요.',
          html: `<div v-for="(item, index) in response.data.data.schools" :key="index">
                     {{ item.school_name }}
                 </div>`
            })
          })
      },
      allowOutsideClick: () => !this.$swal.isLoading()
 })

我试过这段代码,但它在 html 中看起来是这样的。

{{ item.school_name }}

我该怎么办?

我没有使用“Sweetalert 2,如果我不能,希望您能理解。

vue-sweetalert2 不支持动态渲染 HTML 模板,所以你不能通过这种方式传递 Vue 模板;但在这种情况下你真的不需要。相反,您可以像这样在 JavaScript 中生成 HTML 字符串:

axios
  .get(apiUrl)
  .then(response => {
    this.$swal.fire({
      html: response.data.data.schools
              .map(item => `<div>${item.school_name}</div>`)
              .join('')
    })
  })

以上代码使用 Array.prototype.map on the array in response.data.data.schools to map the array values into an array of divs. Then it uses Array.prototype.join 将结果数组值组合成一个长 HTML 字符串。

demo