2013-06-14 2 views
1

저는 이것을 약간 알아 내려고 노력하고 있지만, 나보다 약간 똑똑한 사람은 이미 이것을 알고 있습니다.백본 컬렉션 집합 방법으로 모델이 동일하거나 변경되었는지 확인합니다.

저는 백본 1.0.0을 사용하고 있습니다. 모델의 가져 오기 메소드에 의해 업데이트되는 컬렉션이 있습니다. 모델의 구문 분석 단계에서 Ajax 응답 속성 중 하나는 실제로는 컬렉션이며, 별도로 저장합니다. Backbone.Collection.set() 메서드를 사용하여 컬렉션을 업데이트합니다. 그것은 객체 리터럴의 배열로 제공됩니다.

Backbone.Collection.set() 메소드에 몇 가지 문제가 있습니다. 매번 컬렉션의 모든 모델을 제거한 다음 변경되지 않은 모델이 모두 다시 추가되는 것 같습니다. 컬렉션에 모두 바인딩하여 모든 이벤트를 볼 수 있습니다.

백본은 모델이 동일하거나 변경되었거나 제거되었거나 업데이트되었는지 여부를 어떻게 결정합니까? 나는 근원을보고있다. 그러나 정말로 그것을 알아 듣지 않고있다. 각 모델에 대해 일종의 식별 속성을 찾고 있습니까?

답변

1

메서드는 Collection.get에 모델을 전달하고 아무 것도 반환하는지 확인하여 컬렉션에 모델이 있는지 확인합니다.

Collection.get은 모델의 id을 사용하고 기존 일치 항목을 찾으려면 에 id이 없으면 찾습니다. cid은 항상 내부적으로 생성되므로 set에 전달 된 개체에 id이 없으면 일치하는 항목을 찾지 않으며 항상 새 것으로 처리됩니다.

기존 모델이있는 경우 set 메서드가 새 특성과 함께 호출됩니다. Model.set에 따르면 새 특성이 이전 특성과 같지 않으면 변경 이벤트가 발생합니다.

+0

훌륭한 작품이되었습니다. 작은 변화 :) 감사합니다. – hhh