我正在尝试使用angular的routeProvider来管理我应用的所有路线。我在angular(客户端)的app.js文件中相应地定义了我的路由:
(function(){
var app = angular.module("Crowdsourcing", ["ngRoute"]);
app.config(function($routeProvider){
$routeProvider
.when("/single/:street/:buildingNumber/:apartmentNumber", {
templateUrl: "/views/single.html'",
controller: "ListingCtrl"
})
.otherwise({redirectTo:"/"});
});
}());
然而,当在浏览器上写一个URL(例如/ single)时,我的后端express / node api试图处理该请求。因此,找不到它,因为后端路由例如是/ api / foo。如何确保Angular的routeProvider始终管理我的请求?
更重要的是应用程序的基本流程是什么?当客户端编写URL时,应用程序如何知道URL是由快递js还是由routeProvider处理?
答案 0 :(得分:1)
通常,您可以通过在主机名和网页网址之间使用#
符号来区分角度应用处理的网址与快速网址。
例如:
如果您想从后端请求网址,请致电:
http://host.com/api/foo/
相反,如果您想要从角度应用程序请求URL,您可以调用:http://host.com/#/single
因此,如果您想调用角度应用网址,请添加#
符号。
在使用单页应用程序时,您需要牢记这一点非常重要。
<强>更新强>
看看这个种子项目:https://github.com/btford/angular-express-seed
它使用与您的项目类似的技术堆栈。这应该让你更清楚。
答案 1 :(得分:1)
前几天我遇到过同样的问题。问题是,即使您对数据进行服务器调用,它也会将其重定向到客户端路由并在$routeProvider
中进行搜索。
您需要确保在server.js
中添加类似以下代码的内容。
这意味着当有/api
的呼叫时,它会将其重定向到服务器端的路由,而不是客户端路由。
var api = express.Router();
require('./app/routes')(api);
app.use('/api', api);
在我们拨打电话的工厂中,这将转到服务器端routes.js而不是客户端。
$resource('/api/adduser')