2014-07-21 3 views
1

클릭 할 수있는 확인란이 여러 개 있습니다.데이터를 오브젝트에 밀어 넣습니다. AngularJS

HTML :

<tr ng-repeat="info in test"> 
    <td>{{info.stracka}}</td><td>{{info.tid}}</td> 
    <td><input type="checkbox" id="{{info.id}}" class="checkboxfisk" ng-click="testa(info.id)"> 
</tr> 

컨트롤러 :이 후

$scope.testa = function(id) { //När vi klickar i de olika checkboxarna, så fyllas arrayen med dessa 
     $scope.checkboxes.push(id); 
     console.log($scope.checkboxes); 
    }; 

, 나는 '당신이 클릭 할 때마다 체크 박스를 들어, ID, 즉이 체크 박스에 연결되어, 배열에 밀려 ID를 포함하는 배열을 백엔드로 보내야합니다. 그러나 배열 대신 Object에이 ID를 보내려고합니다. 위에서와 같이 Object와 Object로 데이터를 "밀어 넣을"수 있습니까? 당신이 있지만 하나 개의 가능한 솔루션 는 다음 기능을 수정

$scope.checkboxes = {}; 

을 반대하기 위해 체크 박스에

<input type="checkbox" id="{{info.id}}" class="checkboxfisk" ng-click="testa(info.id, 'UNIQUE_NAME')"> 

초기화 확인란을 이름을 추가입니다 필요한 이유

+0

왜 이것을 개체로 푸시해야합니까? –

+0

개체에 데이터를 저장하려면 키가 있어야합니다. 이 키는 임의적 일 수 있습니까? – Paras

+0

간단히하기 위해 객체 대신 배열을 사용하는 것이 좋습니다. – Paras

답변

1

데이터를 개체로 푸시 할 수 없습니다. 오브젝트를 키 값 쌍의 콜렉션으로 간주하십시오. 오브젝트에 저장하려는 모든 값에 대해 키가 필요합니다. 그래서 내가 당신의 서버 측 객체에 대해 묻는 것입니다.

그래서, 귀하의 경우, 객체에 데이터를 저장하기 전에 키가 필요합니다. 그래서 이렇게해야만합니다.

var testa = function(id){ 
    checkbox[id]=id; 
} 

이 코드는 확실히 객체에 키를 저장하지만 이것을 보게됩니다.

Object {5: 5, 6: 6} 

이것은 실제로 값이 저장되는 방식입니다.

대신 배열을 사용하면 작업이 서버 측에서 많이 단순화됩니다.

0

나는 확실하지 않다

$scope.testa = function(id, name) { 
     $scope.checkboxes[name] = id; 
     console.log($scope.checkboxes); 
    }; 
+0

제공된 코드는 새 값만 할당하기 때문에 작동하지 않습니다. 개체에. 이 코드는 새 값을 객체에 "밀어 넣지"않습니다. – user500468

+0

하지만 http://stackoverflow.com/questions/4215737/convert-array-to-object가 필요합니다. –

0

'푸시'에 대한 질문에 정확히 답변하지는 않지만 객체로 푸시하지 않으면 배열을 this을 사용하여 보내기 직전에 객체로 변환 할 수 있습니다. 당신의 예에서

function toObject(arr) { 
    var rv = {}; 
    for (var i = 0; i < arr.length; ++i) 
    if (arr[i] !== undefined) rv[i] = arr[i]; 
    return rv; 
} 

, 당신은

$scope.checkboxesObject = toObject($scope.checkboxes); 

처럼 뭔가를하고이 새로운 $ scope.checkboxesObject를 보낼 것입니다.

그러나 실제로이 사실을 "백엔드로 객체로 보내려면"가정해야합니다.

관련 문제