Javascript AngularJS todo示例从数组中推/删除行后删除行
我有两个单独的容器:一个用于未完成的任务,另一个用于已完成的任务Javascript AngularJS todo示例从数组中推/删除行后删除行,javascript,angularjs,Javascript,Angularjs,我有两个单独的容器:一个用于未完成的任务,另一个用于已完成的任务 <li ng-repeat="(key, task) in requirements.tasks.outstanding track by $index"> <span class="handle"> <label class="checkbox"> <input type="checkbox" name="checkbox-inline" ng-model
<li ng-repeat="(key, task) in requirements.tasks.outstanding track by $index">
<span class="handle"> <label class="checkbox">
<input type="checkbox" name="checkbox-inline" ng-model="completionOutstanding" ng-checked="task.completed" ng-change="taskChange(task, key)">
<i></i> </label> </span>
<p>
{{task.name}} <br />
<span class="text-muted">{{task.description}}</span>
<span class="date">{{task.date_entered}}</span>
</p>
</li>
功能正常工作,但实际视图中的行仍然存在。应删除该行以及数据,但在测试该行时,该行仍保留在那里。添加/删除任务时,会累积许多行
如何在添加/删除数据时添加和删除列表中的HTML行
JSON模式:
{
"tasks": {
"outstanding":[
{}, {}, {}, {}
],
"completed":[
{}, {}, {}, {}
]
}
}
我认为问题是您正在使用delete从旧列表中删除项,这不会删除数组中该项的槽,只需将其设置为undefined即可 e、 g.[a,b,c],删除b后,它变为[a,未定义,c]
您可能希望尝试从数组中删除该项您在代码中混淆了数组和对象: 对于对象使用:
<!-- repeat attr -->
ng-repeat="(key, value) in items"
// add an item
items[key] = value;
// remove an item
delete items[key];
对于阵列:
<!-- repeat attr -->
ng-repeat="item in items"
// add an item
items.push(item);
// remove an item
items.slice(items.indexOf(item), 1);
绑定应该为您处理这个问题,但不确定是否在数组元素上使用delete,因为它在数组中留下了一个空白点,您可能需要使用splice或lodash。remove insteadNope,他使用的是散列,而不是数组。嗯。。。他认为他是。。。哈哈。这就是问题所在。我仍然在尝试这两种方法时得到不想要的结果。这是一个对象数组。在OP中添加了JSON模式。有两个对象数组,一个用于完成,一个用于未完成。问题是由其他原因引起的,因此,既然您得到了正确的答案,我就标记了它。
<!-- repeat attr -->
ng-repeat="(key, value) in items"
// add an item
items[key] = value;
// remove an item
delete items[key];
<!-- repeat attr -->
ng-repeat="item in items"
// add an item
items.push(item);
// remove an item
items.slice(items.indexOf(item), 1);