【问题标题】:how to add checked items to a different array from unchecked items? angularjs如何将选中的项目与未选中的项目添加到不同的数组中? angularjs
【发布时间】:2017-06-29 18:22:29
【问题描述】:

我正在尝试创建一个按钮,该按钮将删除待办事项列表中的所有完整项目 --- 在尝试了几种不同的方法来完成此操作后,我认为将选中的项目发送到一个数组并且未选中可能是最简单的items 到另一个数组,所以我可以制作一个按钮来清除选中的 items 数组......但我所做的一切都没有工作......想法?

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});
    }

这破坏了整个事情。

【问题讨论】:

  • 你能再读一遍你的问题吗?因为无法理解。 :(

标签: javascript angularjs arrays checkbox


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

【讨论】:

  • 我很困惑,你在谈论一个 if 语句,然后你的 if 语句消失了,并且正在制作一个新的数组部分......
  • Pankaj Parkar 对我的代码进行了编辑以使其更小,查看答案历史记录,您会找到我的代码,也许您会更好地理解。
  • @AbhishekRanjan 如果你想要原始代码,你可以恢复到旧版本。点this link就行了,我刚刚想到了优化代码
  • 谢谢@PankajParkar,刚接触 StackOverflow,我不知道。 ;
  • @karmadreamwalker 你现在可以查看原始代码了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多