我有一个对话框,它将一个主纸箱添加到一个主纸箱阵列中。
中继器显示1个或多个主箱的:
<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();
(( 对于它的价值,dimensionsModalInstanceController是内创建以前的模态控制器在这里 - 所以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);
不幸的是,它不会删除正确的。
啊 “指数” 再试一次!纸箱就是它想要的!谢谢。 – DaveC426913
还发现另一个更简单的解决方案,甚至不需要控制器 - 在DOM中正确: – DaveC426913