我只是使用Vue.js来更新网站上的帖子,因为我很困惑,这是我到目前为止所学到的(我仍然在学习JavaScript,并且不太擅长此事)

[app.js]

var Vue = require('vue');

Vue.use(require('vue-resource'));

var app = new Vue({

  el: '#app',

  components: {
    'postlist' : require('./components/postlist/postlist.js')
  }

});

[poSTList.js]
module.exports = {

  template: require('./postlist.template.html'),

  data: function () {
    return {
      'search': '',
      'posts' : {}
    }
  },

  methods: {
    'updatePosts' : function()
    {
      this.$http.get('api/posts', function(responce, status, request)
      {
        this.$set('posts', responce.data);
      });
    }
  }
};

我正在寻找的是每隔x秒触发一次updatePosts,我该怎么做?

香港专业教育学院尝试在 app.js 中执行此操作
setInterval(function()
{
  app.components.postlist.methods.updatePosts(); // doesnt work
  app.postlist.updatePosts(); //doesnt work either
}, 500);

并尝试将setInterval放入组件本身

我对此非常迷失,实现此目标的最佳方法是什么?

每隔x秒运行一次updatePosts?

最佳答案

我在Vue中的示波器也遇到了麻烦。

这应该工作

module.exports = {
  template: require('./postlist.template.html'),
  data: function () {
    return {
      'search': '',
      posts: {}
    }
  },
  methods: {
    updatePosts: function () {
      var self = this;
      self.$http.get('api/posts', function(responce, status, request) {
        self.posts = responce.data;
        setTimeout(function(){ self.updatePosts() }, 2000);
      });
    }
  },
  created: function () {
    this.updatePosts();
  }
}

Vue中的函数工作方式有所不同,因为您的方法updatePosts不是常规函数。它是在$vm.methods对象中定义的函数。因此,不能像setTimeout($vm.updatePosts)这样定期调用它。实际上$vm.updatePosts不存在。如果您像$vm.updatePosts()这样称呼它,那就是另一回事了。 $vm实例会自动调用其方法...所以正确的方法是setTimeout(function(){ self.updatePosts() },2000)

09-11 19:52