1

使用 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 函数吗?

4

3 回答 3

7

尝试

getSubmissions: function(){
  var _this = this
  this.$http.get(dataUrl, function(submissions){
    this.$set('submissions', submissions);
    this.$nextTick(function(){/*here the DOM is ready*/})
  }
}
于 2016-08-26T15:42:50.103 回答
2

实际上 v-for 适用于生命周期钩子,它不适用于 DOM 上 vue 的第一次渲染,它与 UPDATE DOM 一起使用,因此如果您在 UPDATED 之后放置任何函数,它将在 V-for 之后调用

enter code here

methods:{
},

updated({
//your code
}
于 2017-08-24T23:29:14.120 回答
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

于 2016-08-26T17:23:24.490 回答