我正在使用MVC为游戏开发一个Web应用程序,但视图不同(有一个CreateGameView.html,一个GameView.html ......),这意味着没有共享的导航栏。我正在使用AngularJS。
单击页面中的某些按钮时,某些Controller会执行某些操作,然后加载另一个View(html页面)。
问题是我应该使用Controller在每个html页面中使用ng-app指令吗?
答案 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
。
否则使用路由器或用自己的方式交换页面内容。如果您的页面足够简单,则可能不需要额外的路由器大小。