【问题标题】:AngularJS routes with Express Server, router is called twiceAngularJS 使用 Express Server 路由,路由被调用两次
【发布时间】:2017-07-23 12:42:53
【问题描述】:

我是 node 和 express 的新手,我创建了一个简单的 angularjs + express 应用程序,其中路由只能通过 angular 应用,但 angular 路由器被调用两次。这是我不想要的。当我继续开发时,它也会破坏一些东西。

版本:

  • Angular 1.6.5
  • 角路由器 1.6.5
  • 节点 6.10
  • Express 4.15.3

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 模式时,路由器仍然会被调用两次。

【问题讨论】:

    标签: javascript angularjs node.js express routing


    【解决方案1】:

    在您的 index.html 中,您使用 ng-controller="MainCtrl",因此您的 MainCtrl 代码在 controller.js 中被调用。

    您还可以在 html 中指定一个 ng-view,以便使用您的路由器。由于调用 otherwise('/about') 并且您的 AboutCtrl 代码被调用,您将被重定向到 url '/about'。

    删除ng-controller="MainCtrl",您的代码只会被调用一次。

    【讨论】:

      【解决方案2】:

      问题已解决。

      问题是因为我像 blog 条目那样异步引导了应用程序。 他注入 Angular 以获取“$http 服务”并使用它从服务器获取一些数据。之后,他启动了应用程序。 在我删除了 angular 的注入并将其更改为普通的 ajax 请求后,它就可以工作了。

      这只发生在 Nodejs 后端。当我有一个 PHP 后端时,注入 angular 一切正常。

      【讨论】:

        猜你喜欢
        • 2023-03-22
        • 1970-01-01
        • 2016-02-11
        • 1970-01-01
        • 2015-05-27
        • 1970-01-01
        • 2016-10-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多