2017-08-30 80 views
0

我试图触发其中隐藏的功能或我已经写了两个功能的一个它调用API是在创建钩和第二功能这使得图像数据的基础上显示出图象。问题是我如何在加载dom后调用第二个函数,现在当我试图调用第一个函数或创建它时,返回错误,说明css无法更改为null.I已尝试使用挂载函数newtick但它仍然烧制render_badges功能第一,因此值为空内如何在页面加载后在vuejs中触发一个函数?

创建:函数(){ this.loadlike()

}, 

methods:{ 
     loadlike:function(){ 
     var self = this 
     this.$http.get('/api/user_profile').then(function (res) { 
      self.tasksdata = res.body 
      self.badges = self.tasksdata.data2 
      console.log(self.badges) 
      console.log(this.tasksdata) 
      console.log(this.max) 

     }) 
     }, 


     getHumanDate : function (date) { 

       return moment(date, 'YYYY-MM-DD hh-mm-ss').locale("en-gb").format('LL'); 

      }, 


      render_badges:function(){ 
       var self = this 
       var counter = 0; 
       self.badges.map(function(e){ 
        counter ++; 
        console.log(counter) 
        if(counter <=self.max){ 
         document.getElementById("i").style.display = "initial"; 
        } 
        else{ 
         document.getElementById("i").style.display = "none"; 

        } 
       }) 

      }, 

mounted: function() { 
    this.$nextTick(function() { 
    this.render_badges(); 
    }) 
} 

回答

0

而不是操纵DOM,你应该使用v-如果基于数据打开或关闭的元素本身。与jQuery时代的直接DOM操作相比,它是一种不同的思维方式。阅读更多关于conditional rendering的Vue文档。

如果你是想触发一次的DOM可用,使用安装()

+0

哎肯定会考虑有条件的渲染,但我想通过安装在做,我想安装:函数(){ 此$ nextTick(函数(){ this.render_badges();} ) },但不知在该函数的数据即将空这在创建取出 –

+0

噢我明白了。你必须首先在data()中声明这个数据,否则它不会对它做任何事情。例如: data(){return { badge:[]} –

+0

是的,它宣布了taskdata,徽章和Max,但渲染徽章仍然变空,loadlike函数工作正常 –

相关问题