2012-07-11 11 views
0

모델 목록을 컬렉션에 추가하여 로컬에 저장하려고합니다. 나는이 문제의 근본 원인 인 백본을 완전히 이해하지 못하고있다.컬렉션에 모델 백본 저장

기본적으로 RSS 피드를 가져 와서 피드의 각 항목을 모델에 할당하고 모델 목록을 컬렉션에 배치하여 나중에 반복 할 수 있도록합니다.

내가 컬렉션에 대한 URL을 지정해야한다는 오류가 나타납니다.

누군가 내 목표를 달성하기 위해 따라야 할 올바른 프로세스를 나에게 설명 할 수 있다면 정말 훌륭 할 것입니다.

현재 내가 가진 :

var DetailIndividual = Backbone.Model.extend();  
var DetailsIndividual = Backbone.Collection.extend({ 
    model: DetailIndividual 
}); 

var Search = Backbone.View.extend({ 
    events: { 
     'click a.individualCast' : 'pullIndividual' 
    }, 
    initialize: function() { 
     this.detailsIndividual = new DetailsIndividual(); 
     _this = this; 
     this.detailsIndividual.bind('reset', function(collection) { 
      collection.each(function(item) { 
       //code to handle update 
      }); 
     }); 
    }, 
    pullIndividual: function(e){ 
     e.preventDefault(); 
     //Logic to pull in RSS feed 
     for (var i = 0; i < result.feed.entries.length; i++) { 
      entry[i] = new DetailIndividual({ title: result.feed.entries[i].title, link: result.feed.entries[i].link, }); 
     } 
     this.detailsIndividual.add(entry); 


    } 
}); 

답변

1

모델은 URL 속성을 가지고 있어야하기 때문에 오류가 여기에서 밖으로보고됩니다 http://backbonejs.org/docs/backbone.html#section-167

당신에게 URL 속성을 모델이 있습니까?

+0

모델 데이터를 어디에도 저장하지 않기 때문에 url 속성을 사용하고 싶지 않습니다. url 속성의 필요성을 해결하기 위해 할 수있는 일이 있습니까? – blacktea

+0

@blacktea 기본적으로 backbone.sync를 다시 작성하지 않는 한 url 속성을 지정해야합니다. –

0

오류가 발생하는 이유는 '재설정'이벤트를 바인딩하기 때문입니다. 'reset'은 collection.fetch 나 collection.reset에 대한 명시 적 호출에서만 발생하며 컬렉션에서 서버를 가져 오지 않습니다. 코드에서 이미 메모리에 피드가 있다고 가정합니다. - 명시 적으로 재설정하지 않는 한 초기화를 수신 대기 할 필요가 없습니다.

코드에서 컬렉션 및 모델을 실제로 확장하지 않으므로 확장 된 개체를 만들 필요가 없습니다. 단지 Backbone.Collection 만 사용해야합니다. 기본적으로 JSON을 추가하면 Backbone.Model이 자동으로 만들어지기 때문에 모델 확장을 생성 할 필요가 없습니다. 진정한 맞춤 모델 (메소드 재정의 및 추가 기능 포함)을 작성하는 경우 collection.model 만 지정하면됩니다. 여기

당신이 당신의 컬렉션을로드 할 수있는 방법 : 당신은합니다 ('다시'를 제외하고) 당신이 수집을 구문 분석하고 싶었다 방법의 코드를 제공하지 않았다

var search = Backbone.View.extend({ 
    events: { 
     'click a.individualCast' : 'pullIndividual' 
    }, 
    initialize: function() { 
     this.detailsIndividual = new Backbone.Collection(); 
    }, 
    pullIndividual: function(e) { 
     e.preventDefault(); 
     //Logic to pull in RSS feed 
     for (var i = 0; i < result.feed.entries.length; i++) { 
      this.detailsIndividual.add({ 
       title: result.feed.entries[i].title, 
       link: result.feed.entries[i].link 
      }); 
     } 
    } 
}); 

을하지만, 기본적으로 당신은로드 것 그림과 같이 피드에서 가져옵니다.