当前位置:  开发笔记 > 前端 > 正文

Angular UI Bootstrap:不加载模板

如何解决《AngularUIBootstrap:不加载模板》经验,为你挑选了1个好方法。

我正在使用包含模板的Angular UI Bootstrap v1.0.3(我选择了包含模板,我可以在源代码中看到*tpls模块),但是当我打开这样的模态时(从内部app.run(...)):

var type = "sometype";
$uibModal.open({
    templateUrl: "/partials/" + type + "-dialog.html",
});

我收到一个错误:

angular.min.js:93 GET http://.../uib/template/modal/backdrop.html?sessionid=363192 404 (Not Found)(anonymous function) @ angular.min.js:93r @ angular.min.js:89g @ angular.min.js:86(anonymous function) @ angular.min.js:119r.$eval @ angular.min.js:133r.$digest @ angular.min.js:130r.$apply @ angular.min.js:134g @ angular.min.js:87T @ angular.min.js:92w.onload @ angular.min.js:93 angular.min.js:107

Error: [$compile:tpload] http://errors.angularjs.org/1.4.8/$compile/tpload?p0=uib%2Ftemplate%2Fmodal%2Fbackdrop.html&p1=404&p2=Not%20Found at Error (native)

我尝试手动将模板添加到我的代码中,并将以下代码添加到我的app.js顶部:

angular.module("template/modal/backdrop.html", []).run(["$templateCache", function($templateCache) {
     $templateCache.put("template/modal/backdrop.html", "
"); }]);

仍然是同样的错误



1> Eike Cochu..:

我发现了错误.

问题是使用我在请求拦截器中添加的查询参数请求模板.我为与模板url前缀匹配的拦截器添加了一个例外,现在它可以工作了.

var noSessionIdUrls = [
    "uib/template",
    "template"
];

app.config(['$httpProvider', function($httpProvider) {
    $httpProvider.interceptors.push( function ($q, $injector, $rootScope) { 
        return {
            request: function(config) {
                for(var i = 0; i < noSessionIdUrls.length; i++) {
                    if(config.url.startsWith(noSessionIdUrls[i])) {
                        console.log("request interceptor: omitting session id");
                        return config;
                    }
                }

                config.url = config.url + '?sessionid=' + window.sessionid;
                return config;
            }
        };
    });
}]);

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有