2013-02-20 6 views
0

В моем базовом приложении я использую requirejs для загрузки js-файлов. также мне нужны разные взгляды, нет ссылок на ссылки в моем выпадающем меню. в соответствии с выпадающего меню НМА добавляющий #url пример:все еще навигационные триггеры и upate мой 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

Навигация только обновляет URL-адрес, вы также должны вызвать функцию маршрута, установив для параметра триггера значение true. Если вы хотите обновить URL-адрес без создания записи в истории браузера, установите для параметра replace значение true.

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

станет

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

Да, вы 100% правильно. он исправил проблему. Огромное спасибо. – 3gwebtrain