我正在尝试创建一个按钮来删除待办事项列表中的所有完整项目 - 在尝试了几种不同的方法来完成此操作后,我认为最简单的方法就是将已检查的项目发送到一个数组,并取消选中项目到另一个数组,所以我可以创建一个按钮,只清除已检查的项目数组......但我正在做的事情是工作......想法?
HTML:
<input type="text" placeholder="To do..." ng-model="vm.myTask">
<button type="button" ng-click="vm.submitTask()">Submit</button>
<br>
<div ng-repeat="task in vm.myTasks" ng-class="'checkedbackground': task.checked">
<ul>
<li>
<input type="checkbox" value="{{task.name}}" ng-model="task.checked">{{task.name}}
<button type="button" ng-click="vm.myTasks.splice($index, 1)">Delete</button>
</li>
</ul>
</div>
<button type="button" ng-click="vm.clearAll()"> Clear Complete</button>
homeController.js
var myTasks = [];
var completeTasks [];
class HomeController {
//submit task from input value
submitTask(){
//push new task into array
myTasks.push({name: this.myTask, checked: false});
}
constructor(myTask, checkedTask){
this.myTasks = myTasks;
}
clearAll(){
}
}
angular.module("myapp").controller("HomeController", HomeController);
我删除了我尝试的内容,但我尝试过的一些内容涉及:
constructor(myTask, checkedTask){
this.myTasks = myTasks;
completeTasks.push({name: this.checkedTask, checked: true});
}
但是,这打破了整个事情。
答案 0 :(得分:1)
考虑到您最初的想法以及使用javascript 标记此问题的事实,您可以做的是创建一个删除函数,该函数遍历原始数组(无需创建单独的数组) ),然后检查任务是否已完成(每个列表项可以是具有名为'isDone'的属性的对象),如果完成,您可以使用splice()
另一种方法是
function clr() {
var newlist = TaskList.filter(function (item,i,TaskArr) {
if(item.check)
return false;
else return true;
});
TaskList = newlist;
}
这使用filter()
函数检查项目是否已被检查(已完成)并返回一个仅包含未完成项目的新数组。