angularjs routes,如何检查模板文件是否存在

Ind*_*lar 11 php angularjs

我在我的应用程序中使用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;
            }]
        }

    }))
Run Code Online (Sandbox Code Playgroud)

我想在执行此操作之前return 'public/templates/' + rp.page.replace('.html', '') + '.php'; }必须检查此文件是否存在,否则我想重定向到404页面.

现在发生的是,当我访问一些无效链接时,我没有获得404状态,而是加载主index.html文件,因此,它开始在无限循环中运行相同的代码,最后浏览器挂起.

感谢您的帮助,谢谢.

mic*_*yks 0

 (or $scope.$on)
 $rootScope.$on("$routeChangeError", function(event, current, previous, eventObj) {
    //redirect your user to custom 404 page;
  });
Run Code Online (Sandbox Code Playgroud)