启用了html5模式的Angular和Express路由
Angular and Express routing with html5mode enabled
所以我的问题是:在启用html5mode的情况下,如何使角度路由和快速路由协同工作?当我将状态从"/"更改为管理员状态时,我会得到所有管理员的列表,在刷新页面之前一切都很好。然后我只得到管理员的json结果,但我的视图消失了。我只复制了相关的代码——为了缩短它,没有语法错误。
感谢您的帮助。谢谢
我的文件结构:
+-- client
| app
| admin.config.js
| admin.js
| admin.module.js
| assets
| views
| admin
| admin-edit.ejs
| admin-list.ejs
| lib
| bower components
+-- server
| routes
| index.js
| admins.js
| models
| Admin.js
| config
| dbconfig.js
| server.js
在我的Angular模块.config中,我有:
function config($stateProvider, $urlRouterProvider, $locationProvider) {
$stateProvider
.state('admins', {
url : '/admins',
templateUrl: '/views/admin/admin-list.ejs',
controller : 'AdminController',
resolve : {
loginRequired: loginRequired,
getAdminList : getAdminList
}
});
$locationProvider.html5Mode(true);
$urlRouterProvider.otherwise('/admins');
我的server.js文件看起来像:
/* Routes */
var routes = require('./routes/index');
var auth = require('./routes/auth');
var users = require('./routes/users');
var admins = require('./routes/admins');
var app = express();
/*************************************
App initialization
**************************************/
/* Auto increment mongoose plugin */
autoIncrement.initialize(connection);
/* Auth secret code*/
app.set('superSecret', dbconfig.SECRET);
/* View engine setup */
app.set('views', path.join(__dirname, '../client/views'));
app.set('view engine', 'ejs');
// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'client', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.use(cookieParser());
app.use(express.static('client'));
app.use('/', routes);
app.use('/auth', auth);
app.use('/users', users);
app.use('/admins', admins);
我的索引路径看起来像:
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function (req, res) {
res.render('index');
});
module.exports = router;
我试着把它添加到我的服务器.js 中
app.get('*', function (req, res){
res.sendFile(path.join(__dirname + '/client/index.ejs'));
});
在这种情况下,当我刷新页面时,我的url是/admins,我会下载索引页面。
我还尝试在我的index.js路由中添加
router.get('*', function (req, res) {
res.render('index');
})
添加后,我的管理员列表中出现了无休止的循环。
在我的index.ejs中,我有
<meta charset="utf-8">
<base href="/">
这是很多代码。我想给你这个。这是我昨天发布的一个我引以为豪的答案。这是Angular 1.5中Angular布线的一个简单示例。你必须添加关于$locationProvider.html5Mode(true);
的行,因为我没有使用它。
过了一段时间,我在这里找到了解决方案,而不是在特定的页面上,我在每个获取请求中都添加了星号(*),所以现在我的身份验证路由看起来像:
router.route('/signup')
/* Render index by default */
.get(function (req, res) {
res.render('index', {
page: req.params.page
});
});
相关文章:
- 发送json对象或使用express路由呈现视图
- Nodejs和express路由,如何处理客户端的承诺
- 使用Express路由React服务器端
- 通过express路由调用HTML中的Javascript函数
- 可以't通过Express路由从Mongodb中删除文档
- 启用了html5模式的Angular和Express路由
- 如何使用 Express 4 路由中的 socket.io 向连接的套接字发出事件
- node.js/express路由中的Mongoose组查询
- AngularJS和nodeJs Express:路由和刷新
- 为Express路由向Node js模块传递一个值
- 默认情况下,如何制作Express路由需要身份验证
- 如何拦截send()或render()在Node.js express路由
- 如何在浏览器关闭或更改Express路由时停止node js中的interval
- req.url.indexOf('?')在尝试使用Express路由到控制器时抛出未定义错误.路由器和护
- express路由变量中的HTML
- 如何将被拒绝的承诺转换为异常,并从Express路由处理程序抛出该异常?
- 使用超测运行Mocha测试时,Express路由永远不会执行
- 在没有模板引擎的情况下将express路由到ng2
- Express路由文件中的Socket.io
- Node.js/Express-路由多个Form Post