si sono occupati di alcuni problemi $ locationProvider su cui sono bloccato. Ho una semplice pagina a pagina singola. Ma sto ottenendo il seguente errore:
TypeError: Cannot read property 'replace' of undefined
at trimEmptyHash (angular.js:10551)
at Object.$locationWatch (angular.js:11399)
at Scope.$get.Scope.$digest (angular.js:14217)
at Scope.$get.Scope.$apply (angular.js:14488)
at bootstrapApply (angular.js:1449)
at Object.invoke (angular.js:4182)
at doBootstrap (angular.js:1447)
at bootstrap (angular.js:1467)
at angularInit (angular.js:1361)
at HTMLDocument.<anonymous> (angular.js:26065)
Il mio file app.js è piuttosto semplice ...
var app = angular.module('app',
[
'ui.router'
]
);
app.config([
'$stateProvider',
'$httpProvider',
'$locationProvider',
'$urlRouterProvider',
function ($stateProvider, $httpProvider, $locationProvider, $urlRouterProvider) {
$locationProvider.hashPrefix('!');
$locationProvider.html5Mode(true);
$stateProvider
.state('home',
{
url: '/',
views: {
'aboutView':
{
template: function (params) {
console.log("home");
return 'home';
}
}
}
})
.state('about',
{
url: '/about',
views: {
'aboutView':
{
template: function (params) {
console.log('about')
return 'about';
}
}
}
})
;
}
]);
ho la <base href="http://localhost/apps/uiv8/" />
insieme nel mio file index.html. Quindi, quando commento il codice $ locationProvider, tutto funziona correttamente in # modalità. Posso arrivare a/#/about, ecc. Senza problemi. Non appena ho inserito nuovamente $ locationProvider, niente.
Un po 'di più sul mio ambiente .... Abbiamo MVC di asp.net qui e il route.config sta facendo un {* url} per reindirizzare tutto al percorso predefinito, e ho persino andato fino a modificare IIS con url riscrive per inviare al valore predefinito, ma ottengo ancora l'errore di analisi sopra.
Quindi, qualcuno ha qualche idea su cosa sta succedendo?
Grazie, Nick
BTW, ho controllato, sto eseguendo le versioni più recenti di angular, jquery, & angular-ui-router .... sono andato anche lì nel caso in cui non ero aggiornato. –
L'errore suggerisce che stai chiamando .replace() su qualcosa che non è definito al momento in cui lo stai chiamando, ma il codice che hai postato non mostra dove viene chiamato .replace(). – alex
No, non chiama .replace. Questo è quasi un esempio fuori dalla scatola. Dopo alcune riproduzioni aggiuntive ... ho scoperto che se faccio questo: '