2016-06-09 4 views
0

마스터 카톤 배열에 마스터 카톤을 추가하는 대화 상자가 있습니다.

리피터 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); 

불행하게도, 그것은 바로 하나를 삭제하지 않습니다.

답변

0

우선. ... ($ index, id 등)로 트랙을 사용하는 것이 항상 좋은 생각입니다. 당신은 당신의 목록에 의한 쟁점과 가능한 문제에 대해 걱정할 필요가 없습니다. 둘째.

dimensionsModalVm.deleteMasterCarton(carton) 

로 변경

dimensionsModalVm.deleteMasterCarton(this) 

+0

아 "의 인덱스"를 다시 시도하십시오! 카톤은 원하는 것입니다! 고맙습니다. – DaveC426913

+0

컨트롤러가 필요없는 또 다른 단순한 솔루션을 발견했습니다. 바로 DOM에서 할 수 있습니다 : DaveC426913