Javascript:在另一个方法中调用一个方法

标签 javascript function vue.js

我有一个简单的应用程序,它触发一个 bool 值并将任务设置为已完成:

但我希望能够使用“全部完成”按钮并将每个任务设置为完成。这在这里工作正常:

  completeAll: function() {
    this.tasks.forEach(function(task) {
      task.completed = true;
    });
  },

http://codepen.io/anon/pen/avzMYr

但是我不想直接设置它,而是想使用这样调用的方法,因为我还有很多其他代码需要分离。

  completeTask: function(task) {
    task.completed = true;
  },

  completeAll: function() {
    this.tasks.forEach(function(task) {
      this.completeTask(task);
    });
  },

但是这不起作用,请看这里:

http://codepen.io/anon/pen/EVaMLJ

知道如何在 completeAll 方法中调用“completeTask(task)”方法吗?

最佳答案

您的问题是 .forEach() 回调中 this 的值与外部的值不同。您可以保存 this 的外部值,然后使用保存的版本来获取您想要的内容:

  completeAll: function() {
    var self = this;
    this.tasks.forEach(function(task) {
      self.completeTask(task);
    });
  },

关于Javascript:在另一个方法中调用一个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32418460/

相关文章:

python - webpack-bundle-tracker 没有创建 webpack-stats.json?

javascript - HTML/JS : Change inner. HTML 并将其重置回来

多个文本框的 Javascript 电子邮件验证

javascript - 在不迭代的情况下获取具有一个类但不具有另一个类的元素

c - 关于 C 中的嵌套函数

html - 有没有办法让Vue组件的模板仅包含属性文本?

javascript - Internet Explorer 不会读取对象属性

c - 如何修改已传递给 C 函数的指针?

c++ - Arduino 传递多维数组

jquery - 如何使用 vue.js 2 更改跨度上的文本?