2013-05-25 2 views
6

컬렉션의 개체 순서를 임의로 지정할 때 문제가 있습니다. 여기 Backbone.js 컬렉션 내의 항목을 셔플하는 방법

내가 해봤 코드입니다 :

console.log(this.collection); 
shuffled = this.collection.shuffle(); 
console.log(shuffled); 

을 그리고 여기 (3 개 항목 테스트 컬렉션을 사용) 콘솔 출력 : 당신이 볼 수 있듯이

child {models: Array[3], length: 3, _byId: Object, url: "/myurl/myid", _listenerId: "l7"…} 
_byId: Object 
_events: Object 
_idAttr: "id" 
_listenerId: "l7" 
length: 3 
models: Array[3] 
__proto__: Surrogate 

[child, child, child] 
0: child 
1: child 
2: child 
length: 3 
__proto__: Array[0] 

이 컬렉션은 적절하게 섞지 않고 대신 성가신 아이들로 가득 찬 새로운 쓸모없는 객체를 만듭니다.

내가하려고하는 것은 표시를 위해보기에 모델을 전달하기 전에 모델이 컬렉션에 나타나는 순서를 무작위로 지정하는 것입니다 ("randomize"라는 버튼을 만들어서 해당 버튼의 표시를 무작위로 만들어야 함). 컬렉션의 항목). 이 작업이 쉬운 작업이라고 생각했지만 지금은 완전히 새로운 모델을 만들고 서버에서 셔플을 수행하는 것을 고려하고 있습니다.

도움을 주시면 대단히 감사하겠습니다.

+0

보기를 임의로 설정하려는 경우보기가 아닌 컬렉션에 코드를 넣는 이유는 무엇입니까? –

+0

코드는 뷰에 캡슐화되어 있으며 위의 관련 부분 만 보여주었습니다. 컬렉션은 무작위 화 된 다음 무작위 컬렉션에 따라 뷰가 업데이트되고 저장됩니다. – mgee245

답변

8
console.log(this.collection); 
this.collection.reset(this.collection.shuffle(), {silent:true}); 
console.log(this.collection); 
+0

완벽한! 이것은 트릭을했습니다 ... 이제 .reset 함수를 살펴 보겠습니다. 많은 감사합니다! – mgee245

+0

대단하군요. 이것이 Backbone의 _.shuffle 구현의 기본 동작이되고 싶습니다. – SimplGy