2013-10-30 3 views
1

The Backbone.Collection object 프록시 Underscore's Collection.shuffle()이므로 모든 백본 컬렉션에는 shuffle() 메서드가 있습니다.셔플은 백본 컬렉션의 항목 만 가져옵니다.

밑줄의 셔플 잘 작동 : 내가 밑줄 컬렉션에서 마지막 5 개 항목을 임의 재생하고 싶다면 -

, 그것은 slice() 수행 할 수 있습니다 :

-

당신은 또한 슬라이스 수 백본 컬렉션을 셔플하십시오.

-

백본 컬렉션에 대해 fetch 항목이 데이터베이스에서 여러 번 나왔다면 컬렉션의 항목이 순서대로 정렬되어 나타나기 때문에 마지막으로 fetch 호출에서 가져온 항목 만 셔플 할 수는 없습니다. 슬라이스 셔플 후에도 가져옵니다.

a.models // say, [id:1, id:2, id:3] 
a.fetch().done(function (data) { 
    return data = _.shuffle(data) 
}) 
a.models // [id:1, id:2, id:3, id:4, id:5, id:6], still sorted 

지연된 개체 내부를 정렬해도 외부 컬렉션이 변경되지는 않습니다.

그래서 백본 컬렉션 끝에 n 개의 항목 만 정렬 할 수 있습니까?

+0

무엇 페치의 성공 콜백 내에서 데이터를 셔플은 어떻습니까? – Jack

+0

셔플이나 정렬하고 싶습니까? –

+0

@Jack 예제에서'.fetch(). done' 콜백을 사용하고 싶습니까? – Brian

답변

0

당신은 서버에서 반환 된 데이터를 셔플 구문 분석 기능을 사용할 수 있습니다

MyCollection.prototype.parse = function(resp){ 
    return _.shuffle(resp); 
}; 

myCollection.fetch(); 
+0

오빠, 분석 수준의 셔플이 나에게 발생하지 않았습니다 ... 이것은 유망 해 보입니다 ... 지금 테스트 할 것입니다 ... – Brian

+0

이것은 예기치 않게 천재입니다. 감사합니다 KiT! – Brian

0

당신은 컬렉션에 추가되는 항목을 임의 재생하기 위해 랜덤 비교기를 사용할 수 있습니다.

comparator: function(a) { 
    var rand = _.random(0, 1000); 
    a.set({rand: rand}); 
    return rand; 
} 

바이올린 : http://jsfiddle.net/pYyRp/

관련 문제