[英]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 module.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;
我嘗試將其添加到我的server.js
app.get('*', function (req, res){
res.sendFile(path.join(__dirname + '/client/index.ejs'));
});
在這種情況下,當我的網址是/ 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
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.