2013-09-17 2 views
0

У меня возникла проблема с моими соображениями с помощью функций маршрутизатора, кроме того, в инициализации.BackboneJS - Функции маршрутизатора - вызов?

это мой маршрутизатор код:

var ApplicationRouter = Backbone.Router.extend({ 
     routes: { 
       "": "home", 
       //"*actions": "home", 
       "photo-gallery": "gallery", 
       "sound-lounge": "sound", 
       "contact": "contact" 
     }, 
     initialize: function() { 
       this.homeView = new window.app.HomeView(); 
       this.homeView.render(); 

       /* 
       var soundView = new window.app.SoundView(); 
       soundView.render(); 

       var contactView = new window.app.ContactView(); 
       contactView.render(); 

       var galleryCollection = new window.app.GalleryCollection(); 
     var gallery_items = galleryCollection.fetch(); 
     gallery_items.done(function(){ 
      var gallery_item = new GalleryView({ collection: galleryCollection }); 
     }); 
     */ 



     }, 
     home: function() { 

       console.log('home'); 
     }, 
     sound: function() { 
       //var soundView = new window.app.SoundView(); 
       //soundView.render(); 
       console.log('sound'); 
     }, 
     contact: function() { 
       //var contactView = new window.app.ContactView(); 
       // contactView.render(); 
       console.log('contact'); 
     }, 
     gallery: function() { 

      console.log('gallery'); 

     } 
}); 

Вы можете увидеть возможность у меня есть:

var soundView = new window.app.SoundView(); 
soundView.render(); 

закомментирована в функции инициализировать, это будет работать, но как только я положил его в пределах «sound» function Я получаю эту ошибку: Uncaught TypeError: undefined не является функцией

Это как сделать эту часть: new window.app. SoundView();

Я его назвал window.app.SoundView в моем коде, как я могу идти о том, чтобы эту работу (это происходит неправильно для всех моих участков)

// ДОБАВЛЕНО soundView Код

// SOUNDVIEW  
window.app.SoundView = Backbone.View.extend({ 
    el: $("html"), 
    events: { 
     "click #sound-lounge": "render_sound" 
    }, 
    initialize: function(){ 
     this.render_sound(); 
    }, 
    render: function(model){ 
     return this; 
    }, 
    render_sound: function(){ 
     this.model=new window.app.Home({id: 2}); 
     var $main=this.$el.find('#content-area'); 
     this.model.fetch().complete(function(data){ 
      $main.html(data["responseJSON"].description); 
     }); 
    } 
}); 

Thanks

+0

внутри router's initialize try использовать навигацию, а внутри звукового представления вызывать render_sound после рендера. –

+0

Спасибо, я только начал с backboneJS, поэтому я не уверен на 100%, что вы имеете в виду Есть ли какой-нибудь пример кода, который мог бы мне помочь? Thankyou – sluggerdog

+0

Учебник Томаса Дэвиса действительно хорош для начала работы с Магистраль https://www.youtube.com/watch?v=FZSjvWtUxYk. См. Также: http://backbonetutorials.com/ –

ответ

0

Моя проблема оказалась такой же простой, как удаление window.app. из имени переменной soundView.

например.

window.app.SoundView = Backbone.View.extend ({== SoundView = Backbone.View.extend ({

И

вар soundView = новый window.app.SoundView(); = = var soundView = new SoundView();

Смежные вопросы