현재 레일즈 앱과 함께 Backbone.js를 사용하고 있습니다. 내 문제는, 내 레일 애플 리케이션과 백본 컨트롤러 및 뷰를 구현하는 방법을 모르겠다. 많은 자습서를 읽었지 만 항상 백본에서 컨트롤러 하나만 사용하고 있습니다 .js.Backbone.js with Rails
예를 들어 레일에 두 개의 컨트롤러가 있습니다.
- 활동 컨트롤러
- 은 두 개의보기, 구글지도와 검색 필드를 포함합니다. Google지도는 백본보기로 삽입되며 searchfield는 HTML로되어 있으며 백본보기를 통해 기능을 가져옵니다.
- 검색 필드는 내 레일 모델에서 데이터를 가져 와서지도 안의 마커를 표시해야합니다.
그리고 다른 하나는 사용자의 프로필을 볼 때 여기
-
- 사용자 컨트롤러이며, 내가 갱신 값과 다른 것들
내 application.js에서 내 사용자 프로필에서 활동 컨트롤러와 레일 활동 컨트롤러에서 사용자 컨트롤러를 필요로하지 않는,
var App = {
Views: {},
Controllers: {},
Collections: {},
init: function() {
new App.Controllers.Activities();
new App.Controllers.Users();
Backbone.history.start();
}
};
$(function() {
App.init();
});
문제는 사용하여 응용 프로그램을 시작합니다. 어떻게 해결할 수 있을까요? 자바 스크립트 내에서 현재 URL을 읽은 다음 사용 된 컨트롤러를 결정해야합니까? JavaScript 파일을 application.html.erb에 넣고 여기에서 어떤 컨트롤러를 사용해야하는지 결정해야합니까?
또는 backbone.js 컨트롤러를 사용하는 잘못된 방법입니까?
백본의 구조가 잘못되었습니다 .js? 아니면 잘못된 방법으로 컨트롤러를 사용하고 있습니까?
또 다른 질문은 Backbone.js를 통한 자바 스크립트, 특히 jQuery의 기능을 추가하는 방법입니다. 예를 들어, 사용자가 필드를 클릭하면 필드 안의 레이블을 제거하려고합니다. 또는 일부 탭 기능을 수행하고 일부 요소의 가시성을 전환하고 싶습니다. javascript 백본보기를 사용하는 각 요소에 대해 작성해야합니까? 아니면이 과부하입니까?
희망 나는 분명히했고 누구든지 도울 수있다. thx!
경로를 사용하는 것이 좋습니다. 하지만 당신이 말했듯이 내 URL에는 해시가 없습니다. 표준 레일 경로를 사용하고 있습니다.어떤 컨트롤러를 선택할지 결정하는 더 좋은 방법이 있습니까? 아니면 backbone.js를 포크하고이 기능을 추가하십시오. 어떻게 생각해? – 23tux
포크가 필요하다고 생각하지 않습니다. 컨트롤러는 클래스 일 뿐이므로 이러한 클래스의 메서드 중 하나를 호출하지 않으면 아무 일도 일어나지 않습니다. 이런 식으로 코드를 "분할"하려는 컨트롤러 내에서 무엇을하는지 설명해 주시겠습니까? (좀 더 일반적인 수준에서 : 나는 현재의 레일즈 컨트롤러에 따라 JS를 호출하는 또 다른 방법을 내 대답에 추가 할 것이다.) – polarblau
thx 여러분의 의견과 업데이트. 그러나 나는 CSS가 어떤 컨트롤러가 사용되어야 하는지를 결정하는 것과 관련된이 방법을 좋아하지 않습니다. 다른 컨트롤러와는 별도로 액티비티 컨트롤러의 JavaScript 코드를 유지하는 것이 더 명확하다고 생각하기 때문에이 코드를 이렇게 분할하고 싶습니다. 예를 들어, 활동 컨트롤러와 사용자 컨트롤러에 맵이 있습니다. 보기는 동일하지만 동작이 다릅니다. 또 다른 방법은, 특정 레일 메소드 내에서 이것을 어떻게 처리 할 수 있습니까 (코드는 컨트롤러의 메소드에만 속합니다, 예를 들어 새로운 액션). – 23tux