У меня есть угловая настройка приложения с ng-view. У меня есть маршруты, которые имеют глубину 1 и 2 уровня, например:
.when('/sample', {
templateUrl: 'views/sample.html',
controller: 'SampleCtrl'
})
.when('/sample/:id', {
templateUrl: 'views/sample.html',
controller: 'SampleCtrl'
})
Я использую режим html5 для удаления шотландской маршрутизации, поэтому мои маршруты отображаются как «localhost: 9000/sample» вместо «localhost: 9000#/sample».
Я также использую сервер node modrewrite для включения режима html5, чтобы я мог принимать прямые ссылки на глубокую ссылку в моем URL-адресе (например, localhost: 9000/sample/id), используя модуль npm connect-modrewrite и следующую конфигурацию grunt. :
middleware: function (connect) {
return [
modRewrite(['^[^\\.]*$ /index.html [L]']),
connect.static('.tmp'),
connect().use(
'/bower_components',
connect.static('./bower_components')
),
connect.static(appConfig.app)
];
}
У меня есть файлы css, определенные в моем заголовке, например:
<link rel="stylesheet" href="styles/main.css">
Это отлично работает при маршрутизации в моем приложении. Это также работает, когда я принимаю прямые ссылки, которые имеют один уровень глубины, поэтому переход непосредственно к «localhost: 9000/sample» отобразит страницу нормально. Однако, когда я использую прямую ссылку на путь глубиной 2 уровня, например, «localhost:9000/sample/id», мое приложение не будет правильно отображать мой css, и я увижу такие ошибки консоли, как:
GET http://localhost:5309/snippet/styles/main.css
Нет проблем с разрешением моих зависимостей javascript, которые используют относительные пути того же типа, только css. Я могу исправить это, поставив косую черту перед стилем (href="/styles/main.css"), но я бы предпочел этого не делать, так как это ограничит развертывание моего приложения, а также не так, как wiredep по умолчанию устанавливает зависимости css bower. Есть ли какой-нибудь дружественный к angular-ng-view способ убедиться, что мои пути к файлам css могут правильно разрешаться, независимо от того, на каком маршруте я нахожусь?