AngularJS包含位于文件夹中的文件

时间:2013-08-23 04:18:32

标签: javascript angularjs

当我这样做时

/sites/all/themes/theme/js/controller.js

$scope.template = 'partials/tpl.html'

/sites/all/themes/theme/js/index.html

<div ng-include='template'></div>

/sites/all/themes/theme/js/partials/tpl.html

<b>Ho boy!</b>

我基本上将与角度相关的所有内容移动到js文件夹中。

我需要localhost/partials/tpl.html时返回localhost/sites/all/themes/js/partials/tpl.html。如何在不使用绝对路径的情况下解决这个问题?

2 个答案:

答案 0 :(得分:4)

我使用$ httpProvider.interceptors解决了这个问题。以下将'myAppDirectory'添加到所有请求。

$httpProvider.interceptors.push(function($q) {
    return {
     'request': function(config) {
         config.url = 'myAppDirectory/'+config.url;
         return config;
      },
    };
  });

常规ng-include,例如:

<div ng-include="'user/info.html'">

将加载 myAppDirectory / user / info.html

你可能想要做一些例外。就我而言:

  $httpProvider.interceptors.push(function() {
    return {
     'request': function(config) {
         // ignore api calls and ui-bootstrap templates.
         if (config.url.indexOf('api')==-1 && config.url.indexOf('template')==-1) {
           config.url = 'myAppDirectory/'+config.url;
         }
         return config;
      },
    };
  });

答案 1 :(得分:0)

<base href="/sites/all/themes/theme/js/">内的<head>元素顶部添加index.html

<html>
  <head>
    <base href="/sites/all/themes/theme/js/">
    ...

Reference

  

相关链接

     

务必检查所有相关链接,图像,脚本等。您必须   或者在主html文件的头部指定url base(&lt; base   href =“/ my-base”&gt;)或者您必须使用绝对网址(以/开头)   无处不在,因为相对网址将被解析为绝对网址   使用文档的初始绝对URL,这通常是   与应用程序的根目录不同。

     

使用从文档根目录启用的History API运行Angular应用程序   我们强烈建议,因为它会处理所有相关链接问题。