【问题标题】:Javascript: Call a method inside another methodJavascript:在另一个方法中调用一个方法
【发布时间】:2015-12-01 19:35:54
【问题描述】:

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

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

  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)”方法吗?

【问题讨论】:

  • 欢迎来到 JS 对this 的解释。并非总是如此,除非您明确关闭它。

标签: javascript function vue.js


【解决方案1】:

您可以使用 Bind 在以下方法中设置 this 值:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 2010-11-08
      • 2012-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多