2014-01-17 1 views
0

내 기본 컬렉션과 기본 모델 모두에서 사용자 지정 parse() 메서드를 사용하여 내 서버가 반환하는 모든 래핑을 처리하고 있습니다.parse() 모델을 호출하지 않고 parse()를 호출합니다.

내 문제는 컬렉션이 모든 모델에서 필요하지 않은 parse()를 호출한다는 것입니다. 컬렉션 대신 모델에서 가져올 때만 모델을 구문 분석하면됩니다.

어떤 방식으로 가져 오기를 변경해야합니까 아니면 다른 옵션이 있습니까? 구문 분석 = true 옵션에 대한 몇 가지 주석을 찾았지만 실제 문서는 없습니다. 나는 단지 그들이 내가 추측 가져 오는 것들이었다 경우에만 구문 분석에 필요

// Base class for all models 
module.exports = Backbone.Model.extend({ 
    parse: function(response) { 
     var retrocycled = JSON.retrocycle(JSON.parse(JSON.stringify(response))); 
     this.statusResp = retrocycled.status; 
     this.messageResp = retrocycled.message; 
     return retrocycled.data; 
    } 
}); 

내 컬렉션은 구문 분석 년대에 거의 같은 않습니다,하지만 정말 문제는 무엇을하지 않습니다.

감사합니다.

답변

1

백본 소스 코드 line 256 specifically을 보면 새 모델을 만들 때 parse이 호출 된 것을 볼 수 있습니다.

모델을 컬렉션에 추가하면 서버에서 응답을 가져오고 모델에서 각 항목에 대해 해당 데이터로 새 모델을 생성합니다.

그러나 컬렉션 자체는 parse 메서드도 호출됩니다.

하지만 문맥에 따라 Model#parse에 대한 조건부 호출이 필요합니다. 여기서 문제는 모델이 생성 될 때 독립형 모델로 수행하는지 수집을 작성하는 컨텍스트의 일부로 수행 하는지를 알지 못하는 것입니다.

response을 인트로 스 (inspect)하도록 모델 구문 분석 방법을 설계하고 추가 처리가 필요한지 여부를 결정해야합니다. 그렇지 않은 경우 응답을 다시 반환하십시오. 그렇다면 작업을 수행 한 다음 "고정 된"응답을 반환하십시오.

+0

그래, 생각해 봤지만 컨텍스트를 추론하는 응답을 분석하는 것보다 더 구체적인 방법이 있는지 알고 싶었습니다. 누군가 다른 아이디어를 생각해 냈을 것입니다. 어쨌든 솔리드 해답을 주셔서 감사합니다! – zetsubou

+0

@ zetsubou에 동의합니다.이 작업을 수행하는 더 좋은 방법이 있다면 나는 그것을 좋아할 것입니다. –