2014-11-23 4 views
0

Angular app에서는 ng-repeat을 사용하여 가지고있는 JSON 객체의 모든 항목을 순환합니다. 그래서 예를 들어, 내 JSON 객체 :키와 값을 객체로 재결합하는 방법은 무엇입니까?

$scope.animals = 
{ 
    horse: { 
      sound: "Nay", 
      legs: 4, 
    } 
    beaver: { 
      sound: "thwack", 
      legs: 2 
    } 
} 

나는 목록 Horse, Beaver

<div ng-repeat="(key, value) in animals"> 
    <div class="niceBox"> 
      <h1> {{key}} </h1> 
    </div> 
</div> 

로 구성된 얻을 수를 순환 원하지만 각 동물에 대해, 나는 걸리는 버튼을 갖고 싶어 전체 개체를 선택하고 내가 좋아하는 동물 목록에 추가합니다. 이런 식으로 뭔가 :

<div ng-repeat="(key, value) in animals"> 
     <div class="niceBox"> 
       <h1> {{key}} </h1> 
       <div ng-click="addToFavorites(animal)">Add To Favorites</div> 
     </div> 
    </div> 

말썽이 이미 (key, value)ng-repeat을 헤어진 이후로 난 그냥 매개 변수로 animal을 전달할 수 없습니다입니다.

개체를 전체적으로 사용할 수 있도록 (key, value)을 어떻게 재구성합니까? 단지 속성 이름과 거기에 - 더 원 "개체"당신이 원하는 재 조립이 없기 때문에이이

<div ng-repeat="(key, value) in animals"> 
    <div class="niceBox"> 
      <h1> {{key}} </h1> 
      <div ng-click="addToFavorites(key, value)">Add To Favorites</div> 
    </div> 
</div> 

에 의해 그리고 컨트롤러에

+0

무엇 단지 모두 통과에 대해 'key'와'value'를'addToFavorites'에 추가할까요? 그리고 얼마나 정확히이 _single 객체 _가 보여야합니까? – raina77ow

+0

일반적으로 동물에서'ng-repeat = "동물을 반복하고'addToFavorites'에'animal'을 전달하면 다른면에 깨끗한 객체가 생깁니다 – Raphi

+0

'addToFavorites (value) – raina77ow

답변

1

봅니다

$scope.addToFavorites = function(key, value) { 
    $scope.animal = {}; 
    animal[key] = value; 
    /** your code **/ 

} 
3

귀하의 질문은 오해의 소지가 값. 당신이 첫번째 장소에있는 동물에 대한 하나의 객체가 있다면 :

var animals = [{ 
    name: 'horse', 
    sound: ..., 
    ... 
}, { 
    name: 'beaver', 
    ... 
}, ...]; 

"재 조립"아무것도 없을 것이다를, 당신은 단지 그것을 사용하십시오 :

<div ng-repeat="animal in animals"> 
    {{animal.name}} 
    <button ng-click="addToFavorites(animal)">...</button> 
</div> 
+0

음 ... 아마도 더 나은 디자인 결정 일 것입니다. – Raphi

관련 문제