我正在努力使routeProvider的管理我的应用程序的所有路线。我在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)时,请求将由我的后端表示/节点api处理。因此,由于后端路由是/api/foo,所以找不到它。如何确保角的routeProvider总是管理我的请求?
更重要的是,应用程序的基本流程是什么?当客户端编写URL时,应用程序如何知道url是由express js还是由routeProvider处理的?
发布于 2015-12-01 10:21:41
通常,您可以通过在主机名和页面URL之间使用#符号来区分由角度应用程序处理的URL和快递URL。
例如:
如果您想从后端请求一个URL,您将调用:http://host.com/api/foo/
相反,如果您想从您将调用的角应用程序中请求一个URL:http://host.com/#/single
因此,如果您想要调用角应用程序URL,您必须添加#符号。
这是一个非常重要的事实,您在使用单页应用程序时需要记住这一点。
更新:
看看这个种子项目:https://github.com/btford/angular-express-seed
它使用与您的项目类似的技术堆栈。这应该会让你更清楚。
发布于 2015-12-01 10:38:59
几天前我也遇到过同样的问题。问题是,即使在服务器调用数据时,也会将其重定向到$routeProvider中的客户端路由和搜索。
您需要确保在server.js中添加类似于下面代码的内容。这意味着,当出现以/api开头的调用时,它将将其重定向到服务器端的路由,而不是客户端路由。
var api = express.Router();
require('./app/routes')(api);
app.use('/api', api);在您的工厂中,当我们按下面的方式调用时,这将转到服务器端routes.js而不是客户端。
$resource('/api/adduser')https://stackoverflow.com/questions/34017697
复制相似问题