2017-06-29 55 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 ),我只是想了一下優化代碼 –

相關問題