[AngularJS] Routing bez HashBangu
var app = angular.module("app", ["ngRoute"]);
app.config(function($routeProvider, $locationProvider) {
$locationProvider.html5Mode({
enabled: true,
requireBase: false // alebo použiť <base href=""> ale base URL nieje známa
});
$routeProvider
.when("/", {
templateUrl : "main.html"
})
.when("/prva", {
templateUrl : "prva.html",
controller : "ctrl1"
})
.when("/druha", {
templateUrl : "druha.html",
controller : "ctrl2"
})
.otherwise({
redirectTo : '/'
});
});
problém je ten že Ak by som chcel použiť <Base href=""> tak tá sa mení (teda je neznáma).
Ako zabezpečiť aby routing vedel že má routovať od úrovne kde sa nachádza index.html ? Problém je že index.html sa nenachádza v web.com/index.html ale je to web.com/neco/neco/index.html (a ja nevím to neco).
ďalšia otázka je ohladom .otherwise ktorý ale v html5Mode nieje podporovaný. Ako ale zabezpečiť aby to fungovalo aj v prípade html5Mode ?
Tak som to vyriešil, tag <base> pridávam do headu až po načtení stránky (ale pred načítaním routingu, obsahu a dát JSON).
Tak som to ešte nevyriešil,.... narazil som troška na problém. Ako môžem zmeniť skrz JS hodnotu <base href="/"> z externého súboru (načítaného cez relatívny link), ak index.html je v domain.com/neco/app/index.html a pred zmenením hodnoty <base href="/"> neviem načítať ten externý JS súbor ktorý by to mal zmeniť? napadlo ma načítať ten JS ešte pred tagom <base> akurát problém je pak to časovo sériovo vykonať tak aby som načítal skorej JS súbor, pak sa načítal <base> tag v index.html potom vykonať JS (zatiaľ zdržať načitávanie index.html súboru), potom zmeniť base href a potom pokračovať v načitávaní index.html.