1

나는 특정 방식으로 정렬하는 데 노력하고있어 개체의 배열이 있습니다각도 NG 반복 여러 종류의

[ 
    { 
    name: 'Blackcurrant', 
    created_at: '3/2/2014' 
    },{ 
    name: 'Bilberry', 
    created_at: '1/2/2013' 
    },{ 
    name: 'Apple', 
    created_at: '11/5/2012' 
    },{ 
    name: 'Boysenberry', 
    created_at: '1/1/2014' 
    },{ 
    name: 'Coconut', 
    created_at: '3/4/2011' 
    },{ 
    name: 'Breadfruit', 
    created_at: '6/6/2013' 
    },{ 
    name: 'Currant', 
    created_at: '2/8/2014' 
    },{ 
    name: 'Avocado', 
    created_at: '5/13/2014' 
    },{ 
    name: 'Banana', 
    created_at: '7/16/2014' 
    },{ 
    name: 'Blueberry', 
    created_at: '1/18/2010' 
    },{ 
    name: 'Apricot', 
    created_at: '9/17/2014' 
    },{ 
    name: 'Date', 
    created_at: '2/22/2012' 
    },{ 
    name: 'Damson', 
    created_at: '10/10/2014' 
    },{ 
    name: 'Cantaloupe', 
    created_at: '8/13/2014' 
    },{ 
    name: 'Cranberry', 
    created_at: '4/25/2011' 
    },{ 
    name: 'Cucumber', 
    created_at: '7/6/2014' 
    },{ 
    name: 'Blackberry', 
    created_at: '2/10/2014' 
    },{ 
    name: 'Cloudberry', 
    created_at: '1/23/2014' 
    },{ 
    name: 'Cherry', 
    created_at: '7/11/2013' 
    },{ 
    name: 'Cherimoya', 
    created_at: '11/19/2014' 
    } 
] 

내가 그것을 설정을 할 수 있어야합니다을 그래서 내가 할 때 코코넛, 바나나, 멜론, 체리가 처음부터 순서대로 나타나고 그 다음에 created_at 날짜별로 정렬됩니다. orderBy와 필터를 조합하여 사용할 수 있습니까?

+0

밀어 JSON 값을 당신이 그들을 원하는 순서대로 배열로 :

>>Working Plunkr Example 이것은 내가하고 결국 무엇

-mbp

+0

사용자 정의 함수에 의해 orderBy가 필요합니다. –

+0

@TheHeadRush : 나는 그런 식으로 할 것이지만, 끊임없이 업데이트되고 나면 변경 될 때마다 항상 새 JSON을 지속적으로 업데이트하기 때문에 범위에 원본이 필요합니다. – m0ngr31

답변

0

. 그런 다음 뷰에서 JSON 대신 배열을 참조하십시오.
1

필터로 반복을 설정하여 created_at 속성으로 ngRepeat 요소를 정렬 할 수 있습니다. 당신이 가진 보장에 관해서는

<li ng-repeat="food in arrFoods | orderBy:created_at"> 
    <span>{{food.name}}</span> 
</li> 

는 "코코넛, 바나나, 멜론, 체리는 특정 값을 기준으로 정렬하는 자신 만의 방법을 만들어야합니다, 먼저 보여주는. 내 예를 들어, 내가 재산을 추가 한 당신이 배열의 상단에 표시 할 요소에 이전에 페이브는 created_by에 의해 지시되고. 그런 다음

{ name: 'Coconut', created_at: '3/4/2011', fave: true } 

이 ngRepeat 요소에 적용 ...

<li data-ng-repeat="food in arrFoods | orderBy:['fave', 'created_by']"> 

정렬 매개 변수 배열을 적용하여 fave이 true로 설정된 요소 (다른 요소를 false로 설정할 필요가 없음)에 우선 순위를 부여한 다음 created_by별로 정렬합니다.

.filter('fruitSort', function() { 
    return function(fruits) { 
    var favoriteFruit = []; 
    var newFruit = []; 

    angular.forEach(fruits, function(fruit) { 
     if (fruit.name === 'Coconut' || fruit.name === 'Banana' || fruit.name === 'Cantaloupe' || fruit.name === 'Cherry') { 
     if (fruit.name === 'Coconut') { 
      favoriteFruit[0] = circle; 
     } else if (fruit.name === 'Banana') { 
      favoriteFruit[1] = circle; 
     } else if (fruit.name === 'Cantaloupe') { 
      favoriteFruit[2] = circle; 
     } else { 
      favoriteFruit[3] = circle; 
     } 
     } else { 
     newFruit.push(circle); 
     } 
    }); 

    newFruit.sort(function(a,b){return new Date(b.created_at).getTime() - new Date(a.created_at).getTime();}); 
    var sortedFruit = favoriteFruit.concat(newFruit); 

    return sortedFruit; 
    }; 
}) 
+0

시간을내어 답변 해 주셔서 감사합니다. 불행하게도 나는 매번 같은 순서로'fave' 과일을 얻을 것이라고 생각하지 않습니다. 나는 시험 할 것이지만, plunkr이 지금 당장 나를 위해로드되지 않습니다. 나는 작동하는 것처럼 보이는 필자 자신의 필터를 작성했다. – m0ngr31

+0

어쨌든 upvoting 마음에 드시겠습니까? 귀하의 질문에 대한 답변이 있으십니까? – ManBearPixel

+0

물론. 그것에 대해 조사해 주셔서 감사합니다. – m0ngr31