我有一个对话,将一个Master Carton添加到一个Master Cartons数组中。
转发器显示一个或多个主纸箱:
<div ng-repeat="carton in dimensionsModalVm.masterCartons">
<div class="form-group">
<label class="control-label col-md-3">Length</label>
<div class="col-md-9">
<input name="length" min="0" max="999" class="form-control input-inline input-xs" type="number" placeholder="Enter Length" ng-model="carton.dimensions.length" required /> inches
</div>
</div>
<div class="form-group">
<label class="control-label col-md-3">Weight</label>
<div class="col-md-9">
<input name="weight" min="0" max="999" class="form-control input-inline input-xs" type="number" placeholder="Enter Weight" ng-model="carton.dimensions.weight" required /> pounds
</div>
</div>
</div>
</div>
</div>
<button class="btn btn-default" ng-click=" dimensionsModalVm.addMasterCarton()" type="button">Add another master carton</button>
我在第一页上创建了第一个MC,称为
function dimensionsModalInstanceController($http, $uibModal, $uibModalInstance, toastr, cart, masterCarton, CartObservable) {
vm.addMasterCarton = function () {
vm.masterCartons.push({
length: 0,
weight: 0
});
};
vm.addMasterCarton();
(( 对于它的价值,dimensionModalInstanceController是在前一个模态的控制器中创建的 - 所以dimensionsModalInstanceController是dimensionsModalVm:
function masterCartonModalInstanceController($uibModal, $uibModalInstance, cart) {
vm.yes = function(size) {
var modalInstance = $uibModal.open({
templateUrl: 'dimensionsModalContent',
controller: 'dimensionsModalInstanceController',
controllerAs: 'dimensionsModalVm',
...
))
要添加另一个MC,按钮只需调用vm.addMasterCarton。
...
现在我希望能够删除MC。我在每个MC的角落添加了一个[X]。
<div ng-repeat="carton in dimensionsModalVm.masterCartons">
<button class="btn btn-default pull-right" type="button" ng-click="dimensionsModalVm.deleteMasterCarton(this)">X</button>
vm.deleteMasterCarton = function (obj) {
console.log(obj.carton);
console.log(vm.masterCartons);
};
我的输出是:
Object {length: 1, weight: 1, $$hashKey: "object:51"}
和
Object array
[
{
$$hashKey: "object:33",
length: 1,
weight: 1
},{
$$hashKey: "object:51",
length: 1,
weight: 1
}
]
如何告诉它从数组中删除对象?我看到匹配的$$ hashKeys,但我不确定如何处理它们。
我不想发明一个唯一的ID来跟踪它们。
如果我在我的MC转发器上使用了跟踪索引,那么当我删除它们时它们会不合适吗?
这篇文章: How do I delete an item or object from an array using ng-click?
建议应该工作:
var index = vm.masterCartons.indexOf(obj);
vm.masterCartons.splice(index, 1);
不幸的是,它没有删除正确的。
答案 0 :(得分:0)
首先。 使用track by ...($ index,id等)总是好主意。您无需担心列表的跟踪和可能的问题。 第二。
更改
dimensionsModalVm.deleteMasterCarton(this)
到
dimensionsModalVm.deleteMasterCarton(carton)
并使用&#34;&#34;
的索引再试一次