我在我的应用程序中使用angularjs,一切都运行良好,但在加载模板之前,我只想检查它是否实际存在于其指定的路径上。
这是我的代码:
.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;
}]
}
}))
在执行 return 'public/templates/' + rp.page.replace('.html', '') + '.php'; }
之前,我希望它能检查该文件是否存在,否则我想重定向到404页面。
现在的情况是,当我访问一些无效链接时,我没有收到404状态,反而加载了主索引文件 index.html,因此会开始运行同样的代码进入一个无限循环,最终浏览器崩溃。
感谢您的帮助,谢谢。