javascript - 如何检查特定元素的 DOM 并创建新的 Vue 实例?

标签 javascript vue.js vuejs2

我正在尝试寻找一种方法来检查 DOM 中类名为“amp”的特定元素。如果匹配,那么我想创建一个新的 Vue 实例,并使用 HTML 中的数据属性作为 data()。我猜需要某种循环吗?

这可能吗?什么是正确的方法?

谢谢。

HTML 示例:

<div class="amp" id="vue" data-contentDeliveryUrl="www.urlexample.com" data-encodedQuery="=query234" data-cidItem="555-555-555"></div>

<div class="amp" id="vue" data-contentDeliveryUrl="www.urlexample.com" data-encodedQuery="=query123" data-cidItem="666-666-666"></div>

index.js

新实例的例子

new Vue({
 el: '#vue',
 data() {
    return {
        contentDeliveryUrl: contentDeliveryUrl,
        encodedQuery: encodedQuery,
        cidItem: cidItem
    }
 },
 render: h => h(Page)
})

最佳答案

你可以使用 document.querySelectorAll返回包含 amp 类的元素的 NodeList。然后,遍历该列表以创建 Vue 实例。

要设置 Vue 数据属性,您需要使用 spread operator连同 el.dataset . HTML 中的数据属性需要用连字符分隔,而不是使用驼峰式大小写。

(function() {
  document.querySelectorAll('.amp').forEach(el => {
    new Vue({
      el,

      data() {
        return {
          ...el.dataset,
        }
      },

      mounted() {
        console.log(this.$data)
        // this.contentDeliveryUrl
        // this.encodedQuery
        // this.cidItem
      },
    })
  })
})()
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div class="amp" id="vue" data-content-delivery-url="www.urlexample.com" data-encoded-query="=query234" data-cid-item="555-555-555"></div>

<div class="amp" id="vue" data-content-delivery-url="www.urlexample.com" data-encoded-query="=query123" data-cid-item="666-666-666"></div>

关于javascript - 如何检查特定元素的 DOM 并创建新的 Vue 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54186121/

相关文章:

typescript Vue : using a dynamic string name for a method

javascript - 谷歌 polymer : Listening to property changes from outside the element

javascript try catch 与 json 解析

javascript - 为什么在 Javascript 中尝试使用 Array.includes 作为 Array.filter 的函数时出现错误?

javascript - VueJ 中的过滤器

javascript - Vue Js 不更新列表而是更新对象

vuejs2 - Element-UI 如何在列过滤器中设置默认过滤器值

javascript - BX slider 可通过“阅读更多”按钮调整自适应高度

javascript - 如何使用 Ant Design Vue 在 Select 中禁用特定元素?

vue.js - 在 beforeRouteEnter 中访问应用程序