Backbone.js& Marionette.js - 无法从主app.js文件访问视图

时间:2014-08-29 14:21:45

标签: javascript backbone.js marionette

我似乎无法从我的主应用文件访问我的观看次数。我是骨干和牵线木偶的新手,我读过这些文件,却找不到为什么它不起作用。有任何帮助或建议吗?

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);
        }
    });

});

2 个答案:

答案 0 :(得分:0)

你在调用show之前实例化了一个视图吗?我正在等待类似的代码:

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

你可以在Chrome控制台中向我们提供错误吗?

答案 1 :(得分:0)

不确定你在这里想做什么。我假设您要创建一个名为“windowApp”的应用程序,并且您尝试在名为“gameCriteria”的区域内显示名为“GameCriteriaTab”的视图。我正在将您的代码重构为以下内容: -

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。