appendChild元素不能立即使用

时间:2016-04-26 20:02:02

标签: javascript jquery vue.js disqus

我正在使用Vue.js为Disqus评论创建一个组件。 Disqus插件只需要一个标识为disqus_thread的元素即可运行。我的Vue指令如下所示:

Vue.elementDirective('v-disqus',{
    params:['disqusUrl','disqusId','disqusTitle','disqusCategory'],
    bind(){
      var dc = document.createElement('div');
      dc.setAttribute('id','disqus_thread');
      this.el.appendChild(dc)
      setTimeout(() => {
        updateComments(this.params)
      },0)
    }
  });

updateComments()函数(为简单起见而编辑):

var updateComments = function(params){
  console.log('disqus thread:')
  console.log($('#disqus_thread')[0])
  ...

在致电setTimeout之前,您会看到我有updateComments()。当我将其设置为0时,控制台有时会为undefined记录$('#disqus_thread')[0]。当我将它设置为大约150时,插件加载时几乎总是足够长。

所以问题是,为什么this.el.appendChild不会立即触发,在调用updateComments()之前我需要做些什么才能确保元素存在?

编辑:这也在v-if内,但我认为这个元素指令在编译成真之前不会编译。

0 个答案:

没有答案