2013-08-23 2 views
1

Когда яAngularJS включают в себя файл, расположенный в папке

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

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

/сайты/все/темы/тема /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. Как я могу решить это без использования абсолютного пути?

+0

Вы можете создать jsfiddle/plnkr? У меня схожая реализация. – 0xc0de

+0

как я могу добавить файл из другой папки в jsfiddle или plnkr –

ответ

4

Я решил эту проблему, используя $ httpProvider.interceptors. Следующее добавляет myAppDirectory для ВСЕХ запросов.

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

Регулярных нг-включают в себя, например:

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

загрузит myAppDirectory/пользователя/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; 
     }, 
    }; 
    }); 
0

Добавить <base href="/sites/all/themes/theme/js/"> в верхней части вашего <head> элементов внутри index.html.

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

Reference

Относительные ссылки

Будьте уверены, чтобы проверить все относительные ссылки, изображения, скрипты и т.д. Вы должны либо указать базовый унифицированный в голове вашего главного HTML файла (< base href = "/ my-base" >) или вы должны использовать абсолютные URL-адреса (начиная с /) везде, потому что относительные URL-адреса будут разрешены на абсолютные URL-адреса с использованием исходного абсолютного URL документа, который часто равен , отличному от корня приложения.

Запуск Угловые приложения с API истории, включенными из корня документа , настоятельно рекомендуется, поскольку он заботится обо всех относительных проблемах с ссылками.

+0

Может работать, но он сломает все мои маршруты, я использую drupal в качестве backend –

+0

@JonathandeM. Затем попробуйте включить '$ location' в ваш контроллер и используйте' $ scope.template = $ location.path() + '/ partials/tpl.html'' – user2172816

Смежные вопросы