2013-02-20 8 views
0

내 백본 응용 프로그램에서 나는 requirejs을 사용하여 js 파일을로드합니다. 뿐만 아니라 다른 견해가 필요합니다, 거기에 no.of 링크가 내 드롭 다운 메뉴에 있습니다. #url 예를 들어 추가 메뉴 아이오와 드롭 다운에있어서, 상기 탐색 방법은 벌금과 URL을 업데이트 작동 여전히 내비게이션 트리거 및 내 URL 업, 메서드는 호출하지 않습니다

http://localhost:85/bino/html/interface-I.html#projectName/project11 

, 나는 복사도 할 때마다 다른 브라우저에 URL을 붙여 넣기를/현재의 해시 상태 내 router 방법과 새로 고침 잘 작동합니다.

하지만 드롭 다운 메뉴에서 링크를 클릭하면 작동하지 않는데, 호출하지 않는 방법 ... 이유가 무엇이고 어떻게 해결할 수 있습니까?

내 코드 : 메인 JS 파일 (코드의 일부)

var extender = _.extend({},backBone.Events); 
      var params ={ 
       boardHolder :$('.boardHolder'), 
       column  :3, 
       space  :30, 
       extender :extender 
      }; 
      var listApp = new routerer(params); 
      backBone.history.start(); 
      extender.bind("list:selected",function(post){ 
       listApp.navigate(post.category+'/'+post.filter); 
      }); 

내 라우터 코드 : 사전에

define(["backBone","singleton","listCollection","listView","listViews"],function(Backbone,singleton,listCollection,listView,listViews){ 
    singleton.router = Backbone.Router.extend({ 
     routes:{ 
      ""       :"appView", 
      "post"      :"postView", 
      "projectName/:id"   :"projectNameView", 
      "assignedTo/:id"   :"assignedToView", 
      "sortBy/:id"    :"sortByView" 
     }, 
     initialize:function(params){ 
      this.params = params; 
      this.collection = new listCollection; 
      console.log('i am called'); 
     }, 
     hashView:function(){ 
      console.log('from hash view'); 
     }, 
     appView:function(){ 
      var that = this; 
//   var defaultApp = new listCollection(); 
      this.collection.fetch({ 
       success:function(data){ 
        new listViews({model:data,params:that.params}) 
       } 
      }) 
     }, 
     projectNameView:function(thisView){ // not calling not sync 
      console.log('called',thisView); // on click not works 
     }, 
     assignedToView:function(thisView){ // not calling not sync 
      console.log(thisView); // on click not works 
     }, 
     sortByView:function(thisView){ // not calling not sync 
      console.log(thisView); // on click not works 
     } 
    }); 
    return singleton.router; 
}) 

감사합니다.

답변

1

navigate는 url 만 업데이트하므로 trigger 옵션을 true로 설정하여 route 함수를 호출해야합니다. 브라우저 기록에 항목을 만들지 않고 URL을 업데이트하려면 replace 옵션도 true로 설정하십시오.

listApp.navigate(post.category+'/'+post.filter); 

listApp.navigate(post.category+'/'+post.filter, {trigger: true}); 
+0

예, 당신이 100 % 정확 될 것입니다. 문제가 해결되었습니다. 매우 감사합니다. – 3gwebtrain