re: history.js... Yes, I was briefly considering that, but I imagined that I would have to monkeypatch Angular in order to make it work
On Tuesday, April 29, 2014 12:41:32 PM UTC-7, Alesei N wrote: > > so to fix that, you need to convert this route for ie9 into > domain.com/#!/v2/challenges/new from domain.com/v2/challenges/new. > > you could also may be look into polyfil > https://github.com/browserstate/history.js/ might be something that you > can work around. > > > > On Tue, Apr 29, 2014 at 12:30 PM, Yale Kaul <[email protected]<javascript:> > > wrote: > >> That is correct. >> >> On Monday, April 28, 2014 8:38:14 PM UTC-7, Alesei N wrote: >>> >>> correct me if I am wrong, if you load */v2/challenges/new* in ie9, you >>> get base route resolution in angular app right? instead of >>> */v2/challenges/new* you get default page loaded right? >>> >>> >>> On Mon, Apr 28, 2014 at 9:20 PM, Yale Kaul <[email protected]> wrote: >>> >>>> That mostly makes sense to me. >>>> >>>> The part I'm still confused about is 1.2. >>>> >>>> I'm able to make the server redirect to */#/v2/challenges/new* for >>>> IE9, but how will Angular know to do the same thing at >>>> */#/v2/challenges/new* and */v2/challenges/new* (no hashbang)? >>>> >>>> In other words, I load */v2/challenges/new* in Chrome and serve the >>>> index route, which has all my Angular routes set up. One of those routes >>>> is: >>>> >>>> $routeProvider >>>> .when('/v2/challenges/new', { >>>> templateUrl: '/assets/templates/new.html', >>>> controller: 'BuildController' >>>> >>>> ... so Angular correctly loads the correct controller and template. >>>> >>>> But if I load* /v2/challenges/new* in IE9, and then I configure Rails >>>> to redirect to* /#/v2/challenges/new, *what should happen then? I >>>> realize that answer is probably fairly specific to my app, but maybe >>>> there's a general answer. >>>> >>>> Again, I really appreciate your help so far. This is super confusing to >>>> me. >>>> >>>> (Sorry for the odd delay; had to step away from this problem for a few >>>> days) >>>> >>>> >>>> >>>> >>>> On Thursday, April 24, 2014 12:36:16 PM UTC-7, Alesei N wrote: >>>>> >>>>> I think this should make it bit more clear: >>>>> 1) User enters site at /v2/challenges/new >>>>> 1.1) default: browser that supports html5 history would then serve >>>>> index view from that route, index view has all the references to JS/CSS. >>>>> Angular app loads, sees its at /v2/challenges/new and does what it >>>>> needs to do for that route. >>>>> 1.2) user agent is ie9: you would have to redirect them to root of >>>>> domain.com plus appending this route to it via hash bang domain.com/# >>>>> /v2/challenges/new. So at the end you actually redirecting to >>>>> domain.com/#/v2/challenges/new. >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> On Thu, Apr 24, 2014 at 11:15 AM, Yale Kaul <[email protected]> wrote: >>>>> >>>>>> Thanks so much for your reply, Alesei. >>>>>> >>>>>> So if I'm understanding you correctly, the flow for an IE9 visitor is >>>>>> this: >>>>>> >>>>>> 1. User loads /v2/challenges/new, >>>>>> 2. Angular rewrites to /#!/v2/challenges/new >>>>>> 3. Browser ignores everything after #, and loads '/' >>>>>> 4. Server serves up '/', which must have references to Angular scripts >>>>>> -- >>>>>> 5. This is the part I'm still not understanding. Once I get to the >>>>>> root route, the Angular router takes over? How does it differentiate >>>>>> between someone requesting /#!/v2/challenges/new and someone >>>>>> requesting root route? >>>>>> >>>>>> Thanks again! >>>>>> >>>>>> >>>>>> On Thursday, April 24, 2014 6:02:36 AM UTC-7, Alesei N wrote: >>>>>>> >>>>>>> it means, all the routes that you have set up in your SPA, should >>>>>>> have corresponding Rails routes. So when you are hitting that route >>>>>>> directly in browser, your rails app can serve html that has references >>>>>>> to >>>>>>> your angular app javascript and styles. >>>>>>> >>>>>>> In case of hash bang and ie9 it depends how far you want to go, your >>>>>>> root route, should serve mark up that has references to javascript and >>>>>>> styles, so once app loads it can react to /#!/v2/challenges/new. >>>>>>> There are other things you can do, for example if some one comes from >>>>>>> normal url from search, but user agent is ie9, you could redirect to >>>>>>> root >>>>>>> with hash bang equivalent of that route. >>>>>>> >>>>>>> >>>>>>> On Wednesday, April 23, 2014 3:54:44 PM UTC-5, Yale Kaul wrote: >>>>>>>> >>>>>>>> I've been working on an AngularJS/Rails app that must support >>>>>>>> IE9. From what I've read, I should set html5Mode to true in my >>>>>>>> AngularJS >>>>>>>> config, which will use the HTML5 History API for browsers that support >>>>>>>> it, >>>>>>>> and fall back to hashbang URLs for older browsers. All of the Angular >>>>>>>> stuff >>>>>>>> in my app is rooted at */v2/challenges/.* >>>>>>>> >>>>>>>> In the fantastic ng-book <https://www.ng-book.com/>, it says: >>>>>>>> >>>>>>>> "The back-end server will have to support URL rewriting on the >>>>>>>> server side. To support HTML5 mode, the server will have to make sure >>>>>>>> to >>>>>>>> deliver the index.html page for all apps. That ensures that our >>>>>>>> Angular app >>>>>>>> will handle the route." >>>>>>>> >>>>>>>> What does that mean specifically? >>>>>>>> >>>>>>>> If my AngularJS content is at /v2/challenges/new (which appears as >>>>>>>> /#!/v2/challenges/new in IE9), >>>>>>>> >>>>>>>> ...what does that mean for me in terms of the URL rewriting I need >>>>>>>> to do on the server side? >>>>>>>> >>>>>>>> >>>>>>>> Thanks! >>>>>>>> >>>>>>> -- >>>>>> You received this message because you are subscribed to a topic in >>>>>> the Google Groups "AngularJS" group. >>>>>> To unsubscribe from this topic, visit https://groups.google.com/d/to >>>>>> pic/angular/0cFJSAi68xw/unsubscribe. >>>>>> To unsubscribe from this group and all its topics, send an email to >>>>>> [email protected]. >>>>>> To post to this group, send email to [email protected]. >>>>>> Visit this group at http://groups.google.com/group/angular. >>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>> >>>>> >>>>> -- >>>> You received this message because you are subscribed to a topic in the >>>> Google Groups "AngularJS" group. >>>> To unsubscribe from this topic, visit https://groups.google.com/d/ >>>> topic/angular/0cFJSAi68xw/unsubscribe. >>>> To unsubscribe from this group and all its topics, send an email to >>>> [email protected]. >>>> To post to this group, send email to [email protected]. >>>> Visit this group at http://groups.google.com/group/angular. >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >>> -- >> You received this message because you are subscribed to a topic in the >> Google Groups "AngularJS" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/angular/0cFJSAi68xw/unsubscribe. >> To unsubscribe from this group and all its topics, send an email to >> [email protected] <javascript:>. >> To post to this group, send email to [email protected]<javascript:> >> . >> Visit this group at http://groups.google.com/group/angular. >> For more options, visit https://groups.google.com/d/optout. >> > > -- You received this message because you are subscribed to the Google Groups "AngularJS" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/angular. For more options, visit https://groups.google.com/d/optout.
