2013-08-17 6 views
0

중첩 된 개체가있는 모델이있는 컬렉션을 필터링하려고합니다. 불행히도, 내 결과는 항상 비어 있습니다.백본 - 중첩 된 개체가있는 컬렉션에서 필터를 만들려고합니다.

model

내 목표는 간단하다 : 내가 태그 목록과 모든 질문 콘텐츠 볼 수있는 전망이 그래서 내 모델 컬렉션에 반환

는 다음과 같이 만들 수 있습니다 . 사용자가 태그 (예 : "C#")를 클릭하면 태그가 "C#"인 질문 만 반환하도록 내 컬렉션을 필터링하려고합니다.

내 서버에서 패치를 수행하기 전에 제대로 작동했지만 최적화되지 않았습니다.

나는 모든 질문에 대한 콜렉션을 가지고 있는데, 왜 새로운 호출을해야하는지, 필터가 더 나은 해결책이라고 생각합니다.

하지만 필자는 필자의 필자가 필자의 필자가 필자의 필자와 필적하지 않았기 때문에 가능한지 모르겠다. 지금은 테스트하기가 더 쉽기 때문에 라우터에 필터를 설치했습니다. 내가

getQuestionsByTags: function(query) { 

     var test = this.questionsCollection.filter(function(model) { 
      return model.attributes.tags.name == query; 
     }) 
     console.log('result'); 
     console.log(test); 
    }, 

그래서 내가 루프를 만들 생각 오브젝트의 배열을 가지고 있지만 내 결과는 항상 빈 상태 (empty)의 배열이기 때문에

내가 이런 필터를 만들 수 없습니다.

getQuestionsByTags: function(query) { 

     var test = this.questionsCollection.filter(function(model) { 
      _.each(model.attributes.tags, function(tag) { 
       return tag.name == query; 
      }) 
     }) 
     console.log('result'); 
     console.log(test); 
    }, 

어쩌면 간단하지만 어떻게해야할지 모르겠다. 미리 감사드립니다.

답변

0

방금 ​​해결책을 찾았습니다.

getQuestionsByTags: function(query) { 
     var flag; 
     var test2 = this.questionsCollection.filter(function(model) { 
      flag = false; 
      _.each(model.attributes.tags, function(tag) { 
       if(tag.name == query) { 
        flag = true; 
       } 
      }) 

      if(flag) { 
       return model.attributes; 
      } 
     }) 

     console.log('result'); 
     console.log(test2); 
    }, 

나는 깃발을 넣었습니다. 그가 루프 내부에서 사실로 바뀌면 모델에이 태그가 있으므로 반환합니다. 매우 일반적인 것 같아서 누군가 다른 솔루션을 가지고 있다면 게시 해 주시기 바랍니다 :)

관련 문제