2012-08-02 4 views
1

라우터 파일에서 모든 페이지 라우팅/전환을 처리하고 다른 기능의보기 파일에서 해당 기능을 참조하려고합니다. 몇 가지 방법을 시도했지만보기에서 라우터 기능에 액세스 할 수 없습니다. Im 얻는 중 오류 AppRouter 정의되지 않았습니다.Backbone.js 및 jQuery Mobile -보기에서 라우터 기능을 액세스합니다.

window.appRouter = new AppRouter(); 
: 당신은 코드의 비트를 찾아 당신은 세계적으로 액세스 할 수있는 무언가로 다시 작성해야

new AppRouter(); 

:

**Code snippet from router.js:** 

... 
var AppRouter = Backbone.Router.extend({ 

routes: { 
    '': 'showDefault', 
    'index': 'showDefault', 
    'cart': 'showCart', 
    '*actions': 'defaultAction' 
}, 

showCart: function(actions) { 
    console.log('show cart called'); 
    this.changePage(cartView); 
}, 
changePage: function(page) { 
    $('body').append($(page.el)); 
    $.mobile.changePage($(page.el), { changeHash: true, transition: 'slide' }); 
} 
... 

**Code snippet from default page view js** 
... 
events: { 
    'click #showCart': 'cartPage', 
}, 
cartPage: function(action) { 
    $.AppRouter.showCart; 
}, 
... 
+0

'$ .AppRouter', 문제가 있습니다. –

+1

라우터의 기능을 실행하는 데 적절한 href를 사용하지 않는 이유는 무엇입니까 (예 : '카트')? 보기간에 대화를 나누려면 자체 Backbone.Events 인스턴스를 사용하고 구독/게시 디자인을 사용하는 것이 좋습니다. 미안 당신이 습득하려고하는 것을 오해 한 경우. –

답변

2

공유기를 초기화

, 당신이 그런 짓을했다

다음과 같이 라우터에 액세스 할 수 있습니다.

appRouter.showCart(); # instead of $.AppRouter.showCart 
관련 문제