2014-04-09 5 views
0

그냥 기본 라우팅을 시작하고 싶습니다. 여러 가지 예제를 보았을 때 아래 코드가 제대로 작동해야한다고 생각했지만 실행하면 "정의되지 않은 참조 또는 null 참조의 doChat '속성을 가져올 수 없습니다."라는 오류 메시지가 나타납니다. 초기화 순서가 잘못 되었습니까?Marionette js routing - 여기서 내가 뭘 잘못하고 있니? 경로 작업이 정의되지 않았다는 오류가 표시됩니까?

require(["marionette", "jquery.bootstrap", "jqueryui"], function (Marionette) { 
     window.App = new Marionette.Application(); 

     App.start(); 

     App.addRegions({ 
     //add some regions here 
     }); 

     //Set up routing  
     var AppRouter = Marionette.AppRouter.extend({ 
      appRoutes: { 
       "": "doDefault", 
       "chat": "doChat" 
      }, 

      doDefault: function() { 
       alert("doing default...") 
      }, 
      doChat: function() { 
       alert("doing chat...") 
      } 
     }); 

     var router = new AppRouter(); 

     //History 
     if (Backbone.history) { 
      Backbone.history.start(); 
     } 
    }) 

답변

0

는 AppRouter 노선은 두 가지 유형의 routes 속성 및 속성에 정의 appRoutes 다른 목적으로 함수를 호출 할 경로에 정의 된 기본 골격 경로를 허용한다.

위의 코드를 실행하면 두 가지 중 하나를 수행 할 수 있습니다. 가장 빠른 방법은 appRoutes 속성을 routes으로 변경하여 정상적인 백본 라우팅을 수행하는 것입니다. 이것은 AppRouter documentation에 설명되어

var myController = { 
    doDefault: function() { 
     alert("doing default...") 
    }, 
    doChat: function() { 
     alert("doing chat...") 
    } 
} 

var router = new AppRouter({ 
    controller: myController 
}); 

: 두 번째 옵션은 다른 객체를 인스턴스 생성하는 동안 상기 제어기로 AppRouter에 그것을 전달할 것이다.

+0

흠 ... 여기에 1 분 안에 시도해 보겠습니다 ... – Robert

+0

그래. 내가 참조. 옵션 # 2, 컨트롤러 옵션이 작동하고 가장 잘 보입니다. 고마워. 그 개체, 라우터 및 컨트롤러가 별도의 파일에 있어야한다고 생각합니다. 나는 그것의 몇 가지 예를보고 시도해 볼 것입니다. 나는 라우팅을 사용하여 내가 수행 한 작업을 수행해야하는지 여부에 대한 다른 질문을하지만 별도의 게시물에 속합니다. 다시 한번 감사드립니다. – Robert

+0

예, 별도의 파일에 있어야한다는 데 동의합니다. 내 응용 프로그램은 파일 당 하나의 개체를 기반으로 작동하는 경향이 있습니다. 일을 깨끗하게 유지합니다. – Simon