Ich benutze angularjs in meiner Anwendung, alles funktioniert gut, aber vor dem Laden der Vorlage möchte ich nur überprüfen, dass es tatsächlich auf dem angegebenen Pfad existiert.angularjs Routen, wie zu prüfen, ob Vorlagendatei existiert
Hier ist mein Code:
.when("/:page", angularAMD.route({
templateUrl: function (rp) {
return 'public/templates/' + rp.page.replace('.html', '') + '.php'; },
resolve: {
load: ['$q', '$rootScope', '$location',
function ($q, $rootScope, $location) {
var path = $location.path();
//console.log(path);
var parsePath = path.split("/");
var controllerName = parsePath[1];
controllerName = controllerName.replace('.html', '').replace('_', '');
var loadController = "public/js/controllers/" +
controllerName + "Controller.js";
var deferred = $q.defer();
require([loadController], function() {
$rootScope.$apply(function() {
deferred.resolve();
});
});
return deferred.promise;
}]
}
}))
Ich möchte, dass diese return 'public/templates/' + rp.page.replace('.html', '') + '.php'; }
, bevor Sie es prüfen müssen, ob diese Datei vorhanden ist, sonst I bis 404 Seite umleiten möchten.
Was passiert jetzt ist, wenn ich einen ungültigen Link besucht, bekomme ich nicht 404-Status, stattdessen lädt es die Hauptindex.html-Datei, und aus diesem Grund startet es den gleichen Code in einer Endlosschleife, endlich Browser hängt.
Schätzen Sie Ihre Hilfe, danke.
Dann warum Sie nicht verwenden $ routeChangeError oder NOTFOUND (etwas) Ereignis für eine bessere Umsetzung des Gedachten Sie Benutzer umleiten zu andere Seite? – micronyks
Kannst du mir bitte ein Beispiel geben, wie man $ routeChangeError benutzt? –
http://stackoverflow.com/questions/20894568/display-specific-template-on-routechangeerror checkout this. – micronyks