我有一个简单的应用程序,它触发一个 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/