我应该在非单页面应用程序的每个页面中使用ng-app指令吗?

时间:2017-11-07 15:33:00

标签: javascript angularjs web model-view-controller

我正在使用MVC为游戏开发一个Web应用程序,但视图不同(有一个CreateGameView.html,一个GameView.html ......),这意味着没有共享的导航栏。我正在使用AngularJS。

单击页面中的某些按钮时,某些Controller会执行某些操作,然后加载另一个View(html页面)。

问题是我应该使用Controller在每个html页面中使用ng-app指令吗?

2 个答案:

答案 0 :(得分:1)

我只使用一个ng-app指令。而是使用ngroute来控制您的视图。关于w3schools的简短教程:https://www.w3schools.com/angular/angular_routing.asp

以下是它的要点。

的index.html

<body ng-app="myApp">

<!-- if you wanted a common navbar -->
<navbar></navbar>

<div ng-view></div>

</body>

starScreenView.html

<p><a href="/createGame">New Game</a></p>
<p><a href="/loadGame">Load Game</a></p>

createGameView.html

<p>This will be the create game view</p>
<p><a href="/">Main Menu</a></p>
<p><a href="/loadGame">Load Game</a></p>

gameView.html

<p>This will be the game view</p>

app.js

var app = angular.module("myApp", ["ngRoute"]);
app.config(function($routeProvider) {
    $routeProvider
    .when("/", {
        templateUrl : "startScreenView.html",
        controller: "startScreenCtrl"
    })
    .when("/createGame", {
        templateUrl : "createGameView.html",
        controller: "createGameCtrl"
    })
    .when("/loadGame", {
        templateUrl : "gameView.html",
        controller: "gameViewCtrl"
    })
});

正在发生的事情是ng-view正在被templateUrl html页面取代,而且这个块的控制器已经被它包围了。

对于每个路由终点,您可以拥有一个页面,控制器,传递参数等。只需搜索谷歌以获取ngroute示例。

答案 1 :(得分:1)

如果您必须拥有单独的HTML页面并且计划在所有这些页面上使用Angular,那么您需要在所有这些页面上使用ng-app

否则使用路由器或用自己的方式交换页面内容。如果您的页面足够简单,则可能不需要额外的路由器大小。