v-for在vue完成后运行jQuery函数?

时间:2016-08-26 14:44:10

标签: javascript vue.js vue-resource

使用vue-resource我可以从我的api获取数据并设置它以便我可以在我的html中使用它,我的问题是我想在v-for完成之后运行jquery函数,所以jquery可以看到元素我的dom,这是我的代码:

JS

dataUrl = "http://localhost:8081/hesabiha/userSubmissions";

var app = new Vue({
  el: "#campaign",
  methods: {
    getSubmissions: function(){
      this.$http.get(dataUrl, function(submissions){
        this.$set('submissions', submissions);
      });
    },
  },

  ready: function(){
    this.getSubmissions();
  }
});

HTML

<div v-for="item in submissions" class="grid-item">
    <img v-bind:src="item.field_image[0].url" alt="Hello">
</div>

我正在尝试对我的页面运行此功能:

$('.grid').masonry({
    // options...
    itemSelector: '.grid-item',
    columnWidth: 200
  });

它不起作用,无论如何,所以我可以在v-for完成后运行这个jquery函数吗?

3 个答案:

答案 0 :(得分:4)

尝试

getSubmissions: function(){
  var _this = this
  this.$http.get(dataUrl, function(submissions){
    this.$set('submissions', submissions);
    this.$nextTick(function(){/*here the DOM is ready*/})
  }
}

答案 1 :(得分:0)

dataUrl = "http://localhost:8081/hesabiha/userSubmissions";

var app = new Vue({
  el: "#campaign",
  methods: {
    getSubmissions: function(){
      this.$http.get(dataUrl, function(submissions){
        this.$set('submissions', submissions);

        $('.grid').masonry({
            // options...
            itemSelector: '.grid-item',
            columnWidth: 200
        });
      });
    },
  },
  ready: function(){
    this.getSubmissions();
  }
});

如果这不起作用,您可能希望在

的超时函数之后调用.grid

答案 2 :(得分:0)

实际上v-for与生命周期钩子一起工作并且它不能与DOM上的第一个vue渲染一起使用UPDATE DOM,所以如果你在UPDATED之后放置任何函数 它将在V-for

之后调用
enter code here

methods:{
},

updated({
//your code
}