IE8/9가 내 앱이 설정된 방식으로 작동하도록하는 데 문제가 있습니다. 처음에는 익스프레스를 사용하여 내 세션 var를 저장하고 있었지만 IE8의 뷰가 렌더링되지 않을 때 '/ broadcast/12343'과 같은 URL 경로로 작업했습니다. 내가 '/ #/broadcast/12343'으로 바꾼다면 Internet Explorer는 정확하게 렌더링하지만 표현식은 해시 변수를 읽지 않으므로이 경우에는 12343이 될 세션을 설정할 수 없습니다. 만들 세션을 변경해야합니다 각도로 체크인하거나 URL에서 해시가없는 IE8을 확인하는 것이 좋습니다.Angularjs/expressjs - 세션 및 IE
그리고 그래 내가 포함했다 ngRoute 및 각-route.min.js의 CDN 파일
내 server.js
app.configure(function(){
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.set('view options', {
layout: false
});
app.use(express.cookieParser());
app.use(express.session({
store: new MongoStore({
url: 'mongodb://URL/'
}),
maxAge : new Date(Date.now() + (3600000 * 24 *365)), //1 year
expires : new Date(Date.now() + (3600000 * 24 *365)), //1 year
secret: '1234567890QWERTY',
httpOnly: false
}));
app.use(express.favicon());
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.static(__dirname + '/public'));
app.use(app.router);
});
app.configure('development', function(){
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
app.configure('production', function(){
app.use(express.errorHandler());
});
app.get('/partials/:name', routes.partials);
app.get('/event/:eventid', routes.event);
app.post('/registrant/create', routes.register);
app.get('/broadcast/*', function (req, res) {
var eventid = req.url.replace("/broadcast/", "");///ie 12343
if(!req.session.eventids) req.session.eventids = [];
if (req.session.eventids.indexOf(eventid) > -1) {
res.render('index');
} else {
res.render('signup', {
title:"Signup",
eventid:eventid
});
}
});
app.get("*", routes.index);
는
var app = angular.module('myApp', ['myApp.filters','ngRoute','myApp.directives','myApp.services','snap']);
루트/인덱스를 app.js .js
var Event = require('../models/events');
var mongoose= require('mongoose');
var url= require('url');
exports.index = function(req, res){
res.render('index');
};
exports.partials = function (req, res) {
var name = req.params.name;
res.render('partials/' + name);
};
exports.event = function (req, res) {
var id = req.params.eventid;
var self = this;
Event.findOne({managerId:id}, function(err, docs){
res.json(docs);
});
};
exports.register = function (req, res) {
var input = JSON.stringify(req.body);
var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
new Registrant({
eventid:req.body.eventid,
fields:input,
ip :ip,
updated_at : Date.now()
}).save(function (err, registrant, count){
if(err) return next(err);
req.session.username = req.body.firstname + req.body.lastname + req.body.eventid;
});
if (req.session.eventids.indexOf(req.body.eventid) < 0)
req.session.eventids.push(req.body.eventid);
res.redirect('/broadcast/'+req.body.eventid);//eventid rendered in form on signup page
};
Als 내 layout.jade O를
html#ng-app(data-ng-app="myApp" xmlns:ng="http://angularjs.org")
......