从angular度$ locationProvider中的URL中删除#后的问题
在我的app.js我有
$routeProvider .when('/', { templateUrl: '/views/main.html' }) .when('/admin', { templateUrl: 'views/admin.html', controller: 'admin', })
所以我的路线是本地主机:3000 /#/和点击button,它把我到本地主机:3000 /#/pipe理我想从我的url删除#所以我用
$locationProvider.html5Mode({ enabled: true, requireBase: false });
现在localhost:3000/
正在工作,点击button,它把我带到localhost:3000/admin
。
但是,如果我直接给localhost:3000/admin
在url中,它是给不能得到localhost:3000/#/admin
。但是,如果给localhost:3000/#/admin
,这是带我到localhost:3000/admin
为什么这种行为,我怎么能使localhost:3000/admin
可以帮助某人
-
移动这一行
app.use(express.static(path.join(__dirname, 'public')));
在
app.use(app.router);
之前app.use(app.router);
在app.js文件中 -
在
javascripts/app.js
添加这一行$locationProvider.html5Mode({ enabled: true, requireBase: false });
-
添加此代码
app.get('*', function(req, res) { res.render('index', { title: 'Express' }); });
在
http.createServer(app)
行之前的app.js
您需要使所有这些路由返回相同的HTML和其他资源,以便对给定URL的第一个请求返回正确的HTML。
使用'#'会更容易,因为从'#'到URL末尾的所有内容都不会在请求中发送到服务器,所以服务器不必做任何事情。
但是,对于没有“#”的URL,整个URL被发送到服务器,所以服务器必须知道要提供什么服务,客户端必须能够加载正确的视图,这取决于首页加载中使用哪个URL。
在没有提供后端代码的情况下,很难说明任何具体内容,但是您必须确保:
- 对于
http://localhost:3000/admin
之类的每个请求,返回的http://localhost:3000/
- 您只能在CSS中使用绝对URL和客户端JavaScript
- 您的客户端代码在第一次加载时显示正确的视图
- 您的客户端将更改每个URL更改的视图,就像使用“#”所做的一样
请更新您的HTML如下:
在头部,请使用“底部”标签。 所以头标将看起来像一些东西:
<html> <head> <base href="/"> </head> </html>
然后尝试使用URL“localhost:3000 / admin”让我知道这是否有帮助。
- 直接在前端自动更新mongodb的更改,而不使用Node Socket.io和angularjs进行页面刷新
- AngularJS:Karma + Jasmine用_real_后端进行testing
- 在进行数据库调用时,如果控制器响应返回JSON对象,则无法在view.ejs中打印JSON对象值
- 使用Express的angular度多页路由
- 使用express.Router()与多个url和可选参数
- 运行量angular器testing接收错误“ReferenceError:模块未定义”
- 为什么npm试图在错误的目录中findpackage.json?
- 如何从Visual Studio Team System部署纯粹的Angular应用程序到Azure网站
- 发送$ http.get两次