Sto cercando di creare una mini SPA con AngularJS e MVC 5. In aggiunta a ciò, voglio utilizzare il plugin per il router per AngularJS invece di ng-route e voglio abilitare html5mode.AngularJS - ui-router - MVC 5 - html5mode
Il mio problema è che ogni volta che clicco su un elemento di ancoraggio, aggiorna la pagina e invia la richiesta al controller ASP.NET MVC e mette la vista selezionata nel posto giusto, voglio che non si ricarichi.
Se cambio il meccanismo di routing AngularJS su ng-route, allora funziona come volevo, non aggiorna la pagina e instrada alla vista selezionata.
In MVC 5 RouteConfig.cs di file,
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "SpaUI",
url: "{SpaUI}/{*catchall}",
defaults: new { controller = "SpaUI", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "SpaUI", action = "Index", id = UrlParameter.Optional }
);
In app.js programma per AngularJS,
app.config(['$stateProvider', '$provide', '$locationProvider', '$urlRouterProvider', function ($stateProvider, $provide, $locationProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise('/Dashboard');
$stateProvider
.state("dashboard", {
url: "/Dashboard",
templateUrl: "AngularViews/dashboard.html"
})
.state("test", {
url: "/Test",
templateUrl: "AngularViews/test.html"
});
$locationProvider.html5Mode(true);
}]);
In _Layout.cshtml file per ancore;
<a data-ui-sref="dashboard" title="Dashboard">
Nella stessa _Layout.cshtml di file per la visualizzazione segnaposto
<div id="content" data-ui-view="" class="view-animate"></div>
Come posso fare tutte queste cose giocano insieme senza ricaricare la pagina? Qualche idea è apprezzata :)