2013-03-15 3 views
0

내 HTML :AngularJS와 - 컨트롤러의 결합 체크 박스 수집

<ol ng-model="gcwr.checked" ng-repeat="gcwr in gcwrs" id="gcwr">       
<label class="checkbox" for="{{gcwr.Id}}"> 
{{gcwr.Description}} 
<input ng-model="gcwr.checked" type="checkbox" /></label> 
</ol> 

내 컨테이너 컨트롤러 :

// initialize section 
    $scope.gcwrs = API.GetGCWRs(); 

    // in the save/submit function 
    var newContainer = $scope.newContainer; 
    var myGCWRS; 
    var tmp = angular.forEach($scope.gcwrs, function (gcwr) { 
     myGCWRS += gcwr.checked ? gcwr : null; 
     }); 

    newContainer.GCWRs = [ 
     angular.copy(myGCWRS) 
    ]; 

문제 :

GCWRs는 형태로 채우고있다 , 나는 ch를 모으는데있어서 잘못된 것을하고있다. newContainer에 컬렉션을 추가하는 submit/save 함수 광고에서 gcwrs를 호출합니다.

아이디어가 있으십니까?

- 각 세계 :(이 해결

에서 결코 지루한 하루 :.

엉덩이! TGIF에서 어떤 고통 지금은 이유가 있기 때문에

여기에 솔루션입니다 :

var selectedGCWRs = [];   
    var tmp = angular.forEach($scope.gcwrs, function (gcwr) {    
     if (gcwr.checked) {  
      selectedGCWRs.push(gcwr); 
     } 
    }); 

    newContainer.GCWRs = selectedGCWRs; 

    .... then go on and save the newContainer. 

(죄송합니다, 나는 원래의 게시물에서 일부 이름을 변경) [참고 : angular.copy를 사용했다면 ng-repeat에서 생성 한 $$ 해시 키가 제거되지 않았을 것입니다. 따라서 서버는 서버의 모델 클래스와 일치하지 않는 추가 속성, 즉 $$ hashkey를 가지므로이 컬렉션을 거부했을 것입니다. 단순히 컨테이너 컬렉션을 통과함으로써, $$ HASHKEYS 멀리 제거하고 서버는 행복하다.]

+1

왜 질문 안에 대답 ..? – redben

답변

0

해결 :

엉덩이에 어떤 고통! TGIF 때문에 지금 이유가 있습니다.

는 여기에 솔루션입니다 : (죄송합니다, 나는 원래의 게시물에서 일부 이름을 변경)

var selectedGCWRs = [];   
var tmp = angular.forEach($scope.gcwrs, function (gcwr) {    
    if (gcwr.checked) {  
     selectedGCWRs.push(gcwr); 
    } 
}); 

newContainer.GCWRs = selectedGCWRs; 

.... 다음에 가서 newContainer을 저장합니다.

[참고 : angularcopy를 사용했다면 ng-repeat에서 각도가 생성하는 $$ hashkeys가 제거되지 않았습니다. 따라서 서버는 서버의 모델 클래스와 일치하지 않는 추가 속성, 즉 $$ hashkey를 가지므로이 컬렉션을 거부했을 것입니다. 컬렉션을 컨테이너에 전달하기 만하면 $$ hashkeys가 제거되고 서버가 행복해집니다.]

0

난 당신이 내가 당신이 필요 정말 모르겠어요

var myGCWRS = []; 
var tmp = angular.forEach($scope.gcwrs, function (gcwr) { 
    if(gcwr.checked) { 
     myGCWRS.push(gcwr); 
    } 
}); 
newContainer.GCWRs = angular.copy(myGCWRS); 
+0

그걸 테스트 해본 결과 작동하지 않았습니다. 하지만 당신의 도움에 감사드립니다. – Bye

+0

당신은 거의 그것을 가지고있었습니다, "angular.copy"가 문제였습니다. – Bye

0

를 사용할 필요가 있다고 생각 새로운 컨테이너. 각도의 양방향 바인딩을 사용하면 gcwrs 배열이 항상 최신 상태로 유지됩니다. 선택한 요소를 처리 할 준비가되면 배열을 살펴보십시오. 체크 박스 등의 오브젝트의 상태 변경이 체크 된 http://plnkr.co/edit/DxQY74XBxzOU66X18xqH

공지 사항/선택 해제 :

는 다음을 보여줍니다 plnkr입니다.

+0

컨테이너는 서버 측 클래스입니다. 그것은 본질적으로 그 자체와 관련이 없습니다. – Bye

+0

아, 음, plnkr을 보면,'$ scope.save()'함수를 볼 수 있습니다.이 함수는 체크 된 데이터를 서버에'$ http' 또는'$ resource ' – Jason

관련 문제