Instance Vue if element exists?

前端 未结 2 665
长情又很酷
长情又很酷 2021-02-13 00:17

I\'m building an app that a page has some vms, in others not. When we change from one page to another show the following warning:

[Vue warn]: Cannot find element:

相关标签:
2条回答
  • 2021-02-13 00:40

    There are no issues just leaving it as is. This is just a warning that only runs when debug mode is on, so you should have it turned off in production anyway.

    If you want to get rid of it, just check if the element exists before launching Vue -

    if(document.getElementById("element-id")){
      new Vue({...})
    }
    

    Ref: How to check if element exists in the visible DOM?

    0 讨论(0)
  • 2021-02-13 00:45

    This is a bit of an old question. I found this Vue example being useful

    https://vuejs.org/v2/api/#Vue-extend

    So you can create a Vue class and initiate it only if the dom element is present in the DOM.

    // create constructor
    var Profile = Vue.extend({
      template: '<p>{{firstName}} {{lastName}} aka {{alias}}</p>',
      data: function () {
        return {
          firstName: 'Walter',
          lastName: 'White',
          alias: 'Heisenberg'
        }
      }
    })
    // create an instance of Profile and mount it on an element
    if(document.getElementById("element-id")){
      new Profile().$mount('#element-id')
    }
    
    0 讨论(0)
提交回复
热议问题