我是node和express的新手,我创建了一个简单的angularjs + express应用程序,其中路由应仅通过角度应用,但角度路由器被调用两次。这是我不想要的。当我继续开发时,它也会破坏一些东西。
版本:
server.js:
let express = require('express');
let app = express();
//make folder accessible for the application
app.use(express.static(__dirname+"/public"));
app.get('/*', function (req, res) {
res.sendFile('./public/index.html', {root: __dirname});
});
//set port
app.listen(1337);
的index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<base href="/">
<script src="js/angular.js"></script>
<script src="js/angular-route.js"></script>
<script src="controllers.js"></script>
</head>
<body ng-app="app">
<div ng-controller="MainCtrl">
<div class="page" ng-view></div>
</div>
</body>
</html>
controller.js
'use strict';
const app = angular.module('app', ['ngRoute']);
angular.module('app').config(['$locationProvider' ,'$routeProvider',
function ($locationProvider, $routeProvider) {
$routeProvider.when('/about', {
templateUrl: 'about.html',
controller: 'AboutCtrl',
}).otherwise('/about');
$locationProvider.html5Mode(true);
}
]);
angular.module('app').controller('MainCtrl',[function(){}]);
angular.module('app').controller('AboutCtrl',[function(){}]);
我真的不知道我做错了什么。 html5mode工作得很好。当我停用Html5模式时,路由器仍会被调用两次。
答案 0 :(得分:0)
在index.html中,使用ng-controller="MainCtrl"
,因此在controller.js中调用MainCtrl代码。
您还可以在html中指定ng-view,以便使用您的路由器。您将被重定向到网址&#39; / about&#39;因为调用otherwise('/about')
并调用了您的AboutCtrl代码。
删除ng-controller="MainCtrl"
,您的代码只会被调用一次。
答案 1 :(得分:0)
问题已解决。
问题是因为我在此blog条目中异步引导应用程序。 他注入了角度以获得“$ http服务”并从服务器获取一些数据。之后,他引导了应用程序。 在我删除了注入角度并将其更改为普通的ajax请求后,它就起作用了。
这只发生在Nodejs后端。当我有一个PHP后端一切正常,注入角度。