2015-10-01 3 views
0

Я делаю приложение Marionette для загрузки файлов, и я в самом начале его. Для того, чтобы начать вещи, я покажу вам файлы я работаю с:Субмодуль становится «неопределенным» в Backbone.Marionette app

upload_view.js

AppManager.module("PrimaryApp.Upload", function(Upload, AppManager, Backbone, Marionette, $, _){ 

    Upload.UploadPage = Marionette.ItemView.extend({ 
     template: "#upload-template" 
    }); 
}); 

upload_controller.js

AppManager.module("PrimaryApp.Upload", function(Upload, AppManager, Backbone, Marionette, $, _){ 
Upload.Controller = { 
    show: function(){ 

     var uploadView = new Upload.UploadPage(); 

     AppManager.regions.primary.show(uploadView); 
    }, 
    }; 
}); 

app.js

var AppManager = new Marionette.Application(); 

AppManager.on("before:start", function() { 
    var RegionContainer = Marionette.LayoutView.extend({ 
     el: "#app-container", 

     regions: { 
      primary: "#primary-region", 
      secondary: "#secondary-region", 
      header: "#header-region" 
     } 
    }); 

    AppManager.regions = new RegionContainer(); 
}); 

AppManager.on("start", function(){ 
    console.log(AppManager); 
    AppManager.PrimaryApp.Upload.Controller.show(); 
}) 

AppManager.start(); 

При запуске этого приложения в браузере, я получаю эту ошибку:

Uncaught TypeError: Cannot read property 'Upload' of undefined 

Для этой строки кода в app.js:

AppManager.PrimaryApp.Upload.Controller.show(); 

Однако, когда я выход AppManager на консоль я получаю это :

enter image description here

это показывает, что AppManager.PrimaryApp действительно определено и содержит все подмодули пе EDED. Любые идеи, почему мой AppManager.PrimaryApp не определен, когда вызывается как функция, но затем определяется, когда выводится на консоль?

ответ

0

Выяснено, что не так!

AppManager.start(); 

Был в неположенном месте и попытался запустить его до AppManager.PrimaryApp. Тем не менее,

console.log(AppManager); 

каким-то образом вызывается после AppManager.PrimaryApp была определена в результате правильного вывода. Простой ход моей функции start() фиксировал порядок вещей.

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