2014-03-25 5 views
0

"Beginning backbone"이라는 설명서와 설명서를 사용하여 BackboneJs를 배우는 중. 그러나 몇 시간 동안 수집 소집 부분에 갇혀있었습니다. 또한 조회하려고하지만 복잡한 결과를 찾을 수 = 나는이 문서에 표시하지만 현재 코드 구문 현명한백본에서 컬렉션을 정렬하는 방법

에 적용하는 방법을 이해하지 않는 한 나는, 비교기를 사용하는 것을 알고/

http://backbonejs.org/#Collection-comparator

var Book = Backbone.Model.extend({ 
    defaults: 
    { 
     title: "default title", 
     author: "default author", 
     pages: 20 
    }, 
    comparator: function(item) 
    { 
     //sort by title 
     return item.get('title'); 
    } 
}); 

var book1 = new Book({ title:"Book of wonders",author:"author1",pages:1 }); 
var book2 = new Book({ title:"Zelda",author:"author2",pages:2 }); 
var book3 = new Book({ title: "Drake's out", author: "author3",pages:3}); 
var book4 = new Book({ title: "AutoCad",author: "author4",pages: 4}); 

var Library = Backbone.Collection.extend({ 
    model: Book 
}); 

var library = new Library([book1,book2]); 
library.add([book3,book4]); 

library.forEach(function(model){ 
    console.log('Book is called '+model.get("title")); 
}); 

console.log('Library contains '+library.length+' books'); 

답변

0

이 작업 솔루션이며, 그것은 제목으로 모든 것을 정렬합니다. 는`단지

var Book = Backbone.Model.extend({ 
     defaults: 
     { 
      title: "default title", 
      author: "default author", 
      pages: 20 
     } 
    }); 

    var book1 = new Book({ title:"Book of wonders",author:"author1",pages:1 }); 
    var book2 = new Book({ title:"Zelda",author:"author2",pages:2 }); 
    var book3 = new Book({ title: "Drake's out", author: "author3",pages:3}); 
    var book4 = new Book({ title: "AutoCad",author: "author4",pages: 4}); 

    var Library = Backbone.Collection.extend({ 
     model: Book, 
     initialize: function() 
     { 
      console.log("new collection"); 
     }, 
     comparator: function(a,b) 
     { 
      //sort by title 
      return a.get('title') < b.get('title') ? -1 : 1; 
     } 
    }); 

    var library = new Library([book1,book2]); 
    library.add([book3,book4]); 

    library.sort(); 
    library.forEach(function(model){ 
     console.log('Book is called '+model.get("title")); 
    }); 

    console.log('Library contains '+library.length+' books'); 
+0

당신은'a.get ('제목') == b.get ('제목')이 누락 비교 기능 내부의 get 함수의 매개 변수를 변경 아무것도하여 정렬하려면 이 경우, 비교기는 표준 ['Array.prototype.sort'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference)을 사용하여 끝나는 경우에 0을 반환해야합니다./Global_Objects/Array/sort) 메소드를 호출합니다. –

+0

비교기의 첫 번째 줄에 넣어야합니까? – user254883

+1

'a_title == b_title','a_title b_title'의 세 가지 경우 만 다루면됩니다. 0, -1 및 1을 각각 반환해야합니다. 원하는 조건을 정렬하십시오. –

관련 문제