2013-01-18 2 views
1

Backbone.js의 "모델"에서 Ajax 요청을하는 것이 맞습니까? "라우터"에서 더 정확한가? 다른 이유로 백본에 RESTful을 사용하지 않습니다. "Ajax 요청하기"라고 말하면 Ajax 함수가 모델에 구현된다는 의미입니다. 이 함수는 모델 외부에서 호출 될 수 있습니다.Backbone.js의 모델에서 Ajax 요청을하는 것이 맞습니까?

내 웹 응용 프로그램은 라우터 (보기 및 모델 만 사용)를 사용하지 않습니다. 나는 응용 프로그램을 탐색 할 때 브라우저에 URL 경로를 갖고 싶지 않습니다. 어떤 문제가있을 수 있습니까?

답변

5

라우터는 가능한 한 깨끗해야합니다. 그렇기 때문에 분명히 없습니다.

모델에서 모델의 URL을 정의합니다.

보기에서 model.fetch()를 호출하기 만하면됩니다.

내가 사용 (볼) 가장 일반적인 패턴은이 작업을 수행하는 것입니다 : 비즈니스 로직 때문에 모델의 AJAX 요청을 넣어 정확

var MyApp.myModel = Backbone.Model.extend({ 
    url: '/someResourceUrl' 
}); 

var MyApp.myView = Backbone.View.extend({ 
    initialize: function() { 
     this.model.bind("change",this.render,this); 
     this.model.fetch(); 
    }, 
    render: function() { 
     alert('do awesome stuff here'); 
    } 
}); 
+0

확인. 하지만 Ajax 요청은 ... 어디에서? – vicenrele

+0

백본은 fetch를 호출 할 때 자동으로 ajax 요청을 처리합니다. –

+0

확인. 죄송합니다. 나는 다른 이유로 백본의 RESTful을 사용하지 않는다고 언급하지 않았다. 모델에 Ajax 함수를 구현했다. – vicenrele

1

. 이것은 일반적으로 MVC의 원칙뿐만 아니라 backbone.js 문서에 따라 수 있습니다 :

"응용 프로그램이이 일해야하는 위치 다음 모델 인 등 서버의 데이터를 로컬 저장, 쿠키를 수집 할 필요가있는 경우에. 실제로 모델은 전체 시스템에서 예를 들어 에 XMLHttpRequest에 대해 알아야 할 유일한 곳입니다. 모델 계층에 코드를로드하고 모델 개체를 만드는 코드가있을 수 있습니다. " - http://michaux.ca/articles/mvc-architecture-for-javascript-applications

"모델 - 뷰 - 제어기 (MVC)의 그것과 사용자 상호 작용 정보의 표현을 분리 소프트웨어 아키텍처 패턴 [1] [2] 모델은 애플리케이션 데이터로 구성 사업이다. 규칙, 논리 및 기능을 제공합니다. " - http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller

"Backbone.Model - 레일즈 모델에서 클래스 메소드를 뺀 것. 비즈니스 로직에서 데이터 행을 래핑합니다." - http://backbonejs.org/