【问题标题】:angularjs Error: [$compile:tpload] Failed to load templateangularjs 错误:[$compile:tpload] 无法加载模板
【发布时间】:2015-11-15 20:21:27
【问题描述】:

我正在尝试在 angularjs 中构建简单的路由应用程序。我有主 index.html 页面,其中包含 ng-view div 和用于路由的 javascript 代码。还有 2 个简单的 html 页面 view2.html 和 view3.html 放置在子文件夹 partials1 中。 我得到以下错误。请帮忙。

错误:访问被拒绝。 错误:[$compile:tpload] 无法加载模板:partials1/view3.html http://errors.angularjs.org/1.3.15/$compile/tpload?p0=partials1%2Fview3.html

  • index.html:

    <div data-ng-view></div>
    
    <script src="angular.js"></script>
    <script src="angular-route.js"></script>
    <script type="text/javascript">
        var demoApp = angular.module('demoApp', [ 'ngRoute' ]);
        demoApp.controller('SimpleController', function($scope) {
            $scope.customers = [ {
                name : 'Jon Smith1',
                city : 'Charlotte'
            }, {
                name : 'John Doe',
                city : 'New York'
            }, {
                name : 'Jane Doe',
                city : 'Jacksonville'
            } ];
        });
    
        demoApp.config([ '$routeProvider', function($routeProvider) {
            $routeProvider.when('/view1', {
                templateUrl : 'partials1/view3.html',
                controller : 'SimpleController'
            }).when('/view2', {
                templateUrl : 'partials1/view2.html',
                controller : 'SimpleController'
            }).otherwise({
                redirectTo : '/view1'
            });
        } ]);
    </script>
    

  • view2.html

    <div class="container">33333333333333</div>
    
  • view3.html

    <div class="container">33333333333333</div>
    

【问题讨论】:

  • 我会问一个显而易见的问题:您对“partials1”文件夹和随后的“view3.html”是否拥有正确的权限?

标签: javascript html angularjs angularjs-routing


【解决方案1】:

Error: Access is denied 告诉您该模板不可访问。尝试在浏览器中打开模板。像这样的东西:http://my_project/partials1/view3.html。要查看您的应用使用的完整 URL,请使用 dubug 控制台(XHR 选项卡)。

【讨论】:

  • 我错过了开头的正斜杠:这里是正确的templateUrl : '/partials1/view3.html', 希望对某人有所帮助。
【解决方案2】:
Error: [$compile:tpload] Failed to load template: xyz.html (HTTP status: 404 Not Found)

可能是由 web.config 中的以下设置引起的

 <system.webServer>
    <handlers>
      <remove name="BlockViewHandler"/>
      <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />

这会导致阻止对 Views 目录中文件的任何直接请求。对此文件的 Angular xhr 请求被此阻止。

评论一下,看看是否可行。请谨慎使用,因为它允许访问您的文件。

您也可以查看此网址以获取更多回复:Error: $compile:tpload failed to load template Http status : 404

【讨论】:

    【解决方案3】:

    就我而言,问题是我添加了默认标头,例如 Accept = 'application/json'。所以我的路由突然停止工作,因为这些标头不仅应用于我的 $http.post 调用,还应用于我的路由......?很奇怪。

    【讨论】:

      【解决方案4】:

      我遇到了同样的错误,在我的情况下,Web 服务器是用 node js 编写的,并且没有创建用于获取位于指定路径中的视图的 uri,$stateProvider 没有创建,因为对于每个要显示的视图/模板发出 Xhr GET 类型的 http 请求。

      由于 uri 不存在,我获得了 404 代码,这使浏览器进入了回调,杀死了他。确保您的服务器正在返回请求的视图。 (用谷歌翻译翻译)

      【讨论】:

        猜你喜欢
        • 2021-05-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多