2012-02-29 5 views
1

백본 컬렉션이 있고 속성 내에서 ID로 필터링하려고합니다. 기본적으로 사용자에게는 클래스가 있고 클래스에는 location_id가 있으며 필터링 기준으로 사용하고 싶습니다. 위치 ID. 제 컬렉션은 당신에게 아이디어를주기 위해 이렇게 생겼습니다. 애트리뷰트가있는 백본에서 콜렉션 필터링

 
-user 
    -models 
    -0 
     -attributes 
     -location_id 
     -1 
     -attributes 
     -location_id 
     -2 
     -attributes 
     -location_id 

나는

 
    var get_locations = user_class_collection.filter(function(classes){ 
     console.log(classes); 
     return classes.get(location_id)==location.id; 
     }); 

    console.log(get_locations); 

를 사용하여 나는이를 필터링 할 수 있다고 생각하지만 난 location_id 컬렉션에 알고 즉, 하늘의 배열을 반환합니다. 이것이 작동하지 않는 이유는 무엇입니까? 나는 또한 classes.attributes.get을 움켜 잡으려고했지만, 그다지 좋지는 않았다.

처음 몇 개의 반응에서 나는 get('location_id')을 인용해야한다고 적절하게 언급했다. 나는 이제 그 일을했지만, 불행히도 여전히 빈 배열을 얻고있다. 나는 filter이 클래스를 통해 반복 할 것이고 각 클래스에 대해 콘솔 출력을 얻을 것이라고 생각했지만 console.log(classes)은 한 번만 트리거되었습니다. 그게 힌트니까? 아니면 붉은 청어?

+3

그것은'classes.get ('location_id')'안 결과를 렌더링? (작은 따옴표로) – mindandmedia

답변

6

location_id 매개 변수 의 값으로 명명 된 클래스에서 속성을 가져 오려고하는 경우 대신 문자열을 사용해야합니다 (실제로 문자열을 만드는 방법을 선택할 수 있습니다. 작은 따옴표 나 큰 따옴표 모두 사용할 수 있습니다.))

user_class_collection.filter(function(classes){ 
    return classes.get('location_id') == location.id; 
}); 
+0

감사합니다 샌더, 그게 문제 중 하나 였을 수도 있습니다. (그리고 원래 요점을 알려 주었고, 분명히 다른 문제가 있습니다. 질문을 업데이트했습니다.) – pedalpete

+0

응답. 감사합니다. – pedalpete

0

이 시도 :

user_class_collection.select(function(classes){ 
    return classes.get("location_id")==location.id; 
    }); 
1

필터링 수집 컬렉션에 필터링 기능을 사용 백본을 가장 좋은 방법입니다 사용

var UserCollection = Backbone.Collection.extend ({ 
    filtered : function (id) { 

유효하다고 true를 반환하고 신뢰할 수없는 경우 false를 사용하는 것이 좋습니다. 현재 컬렉션 모델을 사용하여 결과를 매핑하고

results = _.map(results, function(model) { return model.toJSON() }); 
처럼 JSON으로 변환 강조 당신이 그런

var results = _.filter(this.models, function (model) { 
     if (model.get('location_id') == id ) 
     return true ; 
    return false ; 
    }); 

를 확인 할 요소를 얻을 수 model.get를 ('')를 사용하여 얻을 수 this.models를 사용

당신이 컬렉션에있는 모든 데이터를 유지하고 싶지 않아하지만 그냥 필터링 한 당신이 공동 재설정해야하는 경우에만

return new Backbone.Collection(results) ; 

선택적으로 결과를 마지막으로 새로운 백본 모음을 반환 llection 및

this.reset(results) ; 

보기 전화와 같은 위의 수익을 건너 필터링 수집 및이