2014-08-29 3 views
0

Мне кажется, что я не могу получить доступ к моим представлениям из моего основного файла приложения. Я новичок в магистрали и марионетке, и я прочитал документы, но не могу понять, почему она не работает. Любая помощь или совет?Backbone.js & Marionette.js - Не удается получить доступ к основным файлам app.js

app.js

window.App = new Marionette.Application(); 

    App.addRegions({ 
     gameCriteria: "#game-criteria" 
    }); 

    App.myRegion.show(myView); 

}); 

myView.js

App.module("Views", function(Views, App, Backbone, Marionette, $, _) { 

    var GameCriteriaTab = Backbone.Marionette.ItemView.extend({ 
     template: JST["game-criteria-tab"], 

     regions: { 
      rulesRegion: "#rules-region" 
     }, 

     onShow: function() { 
      this.rulesRegion.show(RulesView); 
     } 
    }); 

}); 

ответ

0

вы instatiate ваш взгляд перед вызовом шоу? Я ожидаю код, аналогичный этому:

App.myRegion.show(new GameCriteriaTab ({ 
              model: new GameCriteriaModel() 
             })); 

Вы можете сообщить нам об ошибке в хром-консоли?

+0

Его просто говорят, что мой взгляд не определен – conor909

+0

да, ну это потому, что вы не определили его –

0

Не уверен, что вы пытаетесь сделать здесь. Я предполагаю, что вы хотите создать приложение под названием «windowApp», и вы пытаетесь отобразить представление под названием «GameCriteriaTab» в области под названием «gameCriteria». Я пересматриваю ваш код следующим образом: -

windowApp = new Backbone.Marionette.Application(); 

windowApp.addRegions({ 
    gameCriteria: "#game-criteria" 
}); 

windowApp.GameCriteriaTab = Marionette.ItemView.extend({ //Defining the view 
    template: " <include your template Id or className here> " 
});  

windowApp.on("start",function(){ 
    var myView = new windowApp.GameCriteriaTab(); //You need to create an instance of the view if you want to render it in the page 
    windowApp.gameCriteria.show(myView); //Showing the view in the specified region 
}); 

windowApp.start(); //This will run the marionette application 

Вы не можете определить какие-либо регионы внутри ItemView. Вы пытаетесь создать вложенное представление? В этом случае LayoutView будет соответствовать вашим потребностям, и вы можете добавить в него регионы. Просто измените ItemView на LayoutView.

+0

Да, это то, что я делаю. Но что, если ItemView был в отдельном файле? Вызывается после app.js в теге head.html head. Кроме того, вызывается window.App, потому что я пытаюсь получить все мои JS-файлы в DOM. Мое приложение не называется «windowApp» – conor909

+0

В этом случае структурируйте свой код таким образом: - просмотрите определение в myView.js, эту строку кода - «windowApp.start()» в другом файле, называемом appStart.js, и остаток кода в app.js. Затем вы можете включить эти файлы в свой index.html в следующей последовательности: - app.js, myView.js и appStart.js – booleanhunter

+0

Также, если я изменяю ItemView на LayoutView, я получаю следующую ошибку: Не могу прочитать свойство «расширять» неопределенного – conor909

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