2014-05-09 2 views
0

У меня возникли проблемы с получением IE8/9 для работы с моим приложением. Первоначально я использовал express для хранения моего сеанса var, это работало с URL-адресом, например '/ broadcast/12343', однако, когда просмотр в IE8 ничего не отображается. Если я изменил его на '/ #/broadcast/12343', IE будет корректно отображаться, однако выражение не будет читать хэш-переменную, поэтому не может установить сеанс, который в этом случае будет 12343. Мне нужно либо изменить сеансы, которые будут созданы и проверяется угловым или предпочтительно, чтобы IE8 работал без хэша в URL-адресе.Angularjs/expressjs - сеансы и IE

И да, я включил ngRoute и файл CDN для углового route.min.js

Мои 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); 

app.js

var app = angular.module('myApp', ['myApp.filters','ngRoute','myApp.directives','myApp.services','snap']); 

маршруты/индекс .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

html#ng-app(data-ng-app="myApp" xmlns:ng="http://angularjs.org") 
    ...... 

ответ

0

Произошла ошибка с включением файлов, мне нужен был абсолютный путь, а не относительный, спасибо за вашу помощь.

0

ли app.get('/broadcast/*' предназначена для возврата угловой частичной?

Угловое предчувствие, что ваши частичные части должны быть статическими (чтобы их можно было кэшировать), а ваша логика, контролирующая то, что должно отображаться, должна находиться в контроллере.

Вы должны переструктурировать свой код, чтобы запрос GET на /broadcast/* всегда возвращал один и тот же HTML независимо от содержимого вашей сессии.

Однако, если /broadcast/* является НЕ должен возвращать частичный, то, возможно, вам нужно внести изменения в <a> тега в зависимости от того, страница ссылается на него, добавив TARGET = «_ сверху». Это гарантирует, что ngRouter не будет захватывать клик (добавление хэша). например <a href="/broadcast/123" target="_top">Link</a>

Я больше не могу помочь, не видя остальных ваших клиентских сценариев.