2012-05-19 5 views
0

나는 레일스 백엔드로 만들고있는 간단한 List-style 백본 앱을 가지고있다.백본 일회용 아약스 요청

var ItemList = Backbone.Collection.extend({ 
    model: Item, 

    initialize: function(id) { 
    this.id = id; 
    }, 

    url: function(){ 
    return '/lists/' + this.id + '/items'; 
    }, 

}); 

모든 표준 CRUD 작업이 모델에서 잘 작동 :

나는 컬렉션이 있습니다. 그러나 나는 하나의 쇼에서리스트의 모든 항목을 지울 수있는 "추가"경로 ("clear")를 가지고 있습니다. 이것은 보통 징수로 후크하는 방법은,이 정상적인 CRUD 작업을 외부에 있기 때문에

/lists/[:id]/clear 

또는 내가 별도의 일을합니까 : 경로는 것입니까? 당신이 인수없이 reset를 호출 할 때이 컬렉션에서 모든 모델을 제거

clear: function() { 
    var _this = this; 
    $.ajax({ 
     url: '/lists/' + this.id + '/clear', 
     //... 
     success: function() { 
      _this.reset(); 
     } 
    }); 
} 

:

답변

2

컬렉션에 destroy이라는 메서드를 만들 수 있으며 내부에 AJAX 요청을 만드는 몇 가지 방법 중 하나를 사용할 수 있습니다 (Backbone과의 조화). 백본 모델에 이미 다른 의미로 clear 메서드가 있으므로 컬렉션 메서드 clear을 호출하지 않으려합니다.

  1. 올바른 URL과 ID로 던져 - 멀리 Backbone.Model 인스턴스를 만든 다음 방법 "삭제"및 단지에 던져 - 멀리 모델 객체로
  2. 전화 Backbone.sync에 '파괴'호출 ' url '속성이 있고 오른쪽 ID가 빈'toJSON '함수
  3. 직접 jQuery $.ajax 호출을 만듭니다.
2

당신은 그것을 할 때 컬렉션에 reset을 수행 한 후 /lists/:id/clear을 실행하고 자신의 방법을 추가 할 수 있습니다.

+0

Backbone Models에는 서버에 접속하지 않고 브라우저의 데이터를 지우는'clear' 메소드가 있기 때문에 혼란 스러울 수 있습니다. 혼란 스러울 수 있습니다. 아마도'파괴 '를 사용하는 것이 더 나을 것입니다. –

+0

좋은 지적. 나는 분명히 갱신했다. 전부. – user577808