2017-06-29 56 views
0

我想创建一个按钮,将删除一个待办事项列表中的所有完整的项目---在尝试几种不同的方式来完成这一点后,我想它可能是最简单的只是发送选中的项目到一个数组,并未选中项目到另一个数组,所以我可以做一个按钮,只是清除检查项目数组...但我没有做的是工作......思想?如何将未选中的项目添加到不同的数组中? angularjs

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()函数检查项目是否被检查(完成)并返回一个仅包含未完成项目的新数组。

+0

我很困惑,你说的是if语句,然后你的if语句消失了,并且创建了一个新的数组部分... –

+0

我的代码被Pankaj Parkar编辑为使它变小,查看答案历史和你会发现我的代码,也许你会更好地理解。 –

+0

@AbhishekRanjan如果你想要原始代码,你可以恢复到旧版本,只需点击[此链接](https://stackoverflow.com/revisions/44820957/1 ),我只是想了一下优化代码 –

相关问题