我有一個對話框,它將一個主紙箱添加到一個主紙箱陣列中。
中繼器顯示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