2013-12-06 4 views
2

Я просматриваю учебник для Angular, и я пытаюсь избавиться от хэша, который находится в URL-адресе.Angular.js Избавьтесь от # в url

Я экспериментировал с настройкой режима html5 на true. Однако, похоже, это неправильно маршрутизация.

Консоль говорит:

GET http://localhost:8000/partials/phone-list.html 404 (Not Found) 

Это код из моего приложения:

var phonecatApp = angular.module('phonecatApp', [ 
'ngRoute', 
'phonecatControllers' 
]); 

phonecatApp.config(['$routeProvider', '$locationProvider', 
    function($routeProvider, $locationProvider) { 

    $routeProvider. 
    when('/phones', { 
     templateUrl: 'partials/phone-list.html', 
     controller: 'PhoneListCtrl' 
    }). 
    when('/phones/:phoneId', { 
     templateUrl: 'partials/phone-detail.html', 
     controller: 'PhoneDetailCtrl' 
    }). 
    otherwise({ 
     redirectTo: '/phones' 
    }); 
    $locationProvider.html5Mode(true); 

}]); 

я в настоящее время только работает на локальном хосте, и используя узел обслуживать до страницы.

EDIT: . Я прочитал этот вопрос: Removing the fragment identifier from AngularJS urls (# symbol) Однако мое приложение, похоже, имеет такой же код. Не знаете, что мне не хватает?

+1

возможно дубликат [Удаление символа # из angular.js URLs] (http://stackoverflow.com/questions/14771091/remove-the-symbol-from-angle-js-urls) –

ответ

0

Не забудьте также указать страницы для маршрута /partials/phone-list.html на сервере. Не только index.html (или что у вас есть). Состояние Push (html5-mode) работает только тогда, когда вы уже инициировали приложение, иначе как браузер узнает, откуда получить javascript, когда вы делаете новый запрос?

URL-адреса Hashbang отличаются друг от друга, потому что вы действительно делаете запрос на тот же адрес, и поэтому на сервере ничего не нужно изменять.

Edit, а также убедитесь, что ваши ссылки работают должным образом, проверяя первый ответ здесь ngRoute set base url for all routes

+0

Я ищу только простой сайт, который использует только угловые. Как и в учебном пособии: http://docs.angularjs.org/tutorial Можно ли избавиться от # в таком экземпляре, или мне нужно будет использовать язык на стороне сервера? В настоящее время просто обслуживает страницы на локальном хосте с сервером nodejs. –

+0

На самом деле я не работаю с Angular, но знаю, как работает маршрутизация. Вы сказали, что используете узел, поэтому у вас должно быть то, что вам нужно, я бы использовал экспресс, чтобы легко настроить соответствующие маршруты. Как я уже сказал, вам нужно убедиться, что когда вы делаете запрос на сервер /partials/phone-list.html, сервер должен отвечать теми же файлами, что и для вашего корня приложения (файлы index.html + javascript). –

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