Работают ли угловые представления, когда сайт обслуживается из локальной файловой системы?

Я использую angular для разработки приложения. Я разрабатываю свою локальную файловую систему в Windows. Однако, когда я включаю angular-route.js, всякий раз, когда я нажимаю index.html в своем браузере, он вместо этого переходит к index.html#/C:/.

Мое определение маршрута:

myApp.config(['$routeProvider', function($routeProvider) {
    $routeProvider.when('/', {templateUrl: 'home.html', controller: 'HomeCtrl'});
}

Я думаю, что это приводит к поломке сайта, потому что /C:/ не соответствует ни одному угловому маршруту. Что происходит не так? Как я могу это исправить?


person Chris B.    schedule 21.10.2013    source источник
comment
да angular js будет работать с локальным.   -  person nycynik    schedule 21.10.2013
comment
Пожалуйста, опубликуйте свое определение маршрута   -  person nycynik    schedule 21.10.2013


Ответы (2)


Чтобы маршрутизация и ajax (и многое другое) работали правильно, запустите локальный сервер разработки; избегайте использования file:// для разработки, так как браузеры имеют для него разные правила.

Такие инструменты, как yeoman + generator-angular, автоматически настроят gruntfile с задачей server, которая запустит node-connect сервер для локального обслуживания ваших файлов.

Вы можете сделать это с


Ответ из комментариев: для телефонной связи используйте инструменты телефонной связи. Он делает именно то, что я сказал, он запускает локальный сервер.

person forivall    schedule 21.10.2013
comment
Я считаю, что инструменты телефонной связи предназначены для компиляции и упаковки приложений телефонной связи локально или удаленно, а также для запуска полученных сборок в симуляторах. Не обслуживать файлы локально. - person Chris B.; 22.10.2013
comment
github.com/phonegap/phonegap-cli/ blob/ — создает локальный сервер для обслуживания проекта. Предполагаемым получателем является приложение PhoneGap, но любой браузер может использовать контент. - person forivall; 22.10.2013
comment
Кроме того, отредактировано: само руководство по angular говорит вам запустить http-сервер. Вероятно, есть что-то, что говорит, что вы не можете запустить его с file://, но это не стоит искать, потому что я знаю, что это правда; вы не можете запустить его с file://; angular не может анализировать путь Windows как корневой каталог, потому что это не URL-адрес, который он когда-либо встречал в дикой природе. - person forivall; 22.10.2013

Это сработает.

angular.module('MainModule', []).config(function($locationProvider, $routeProvider) {
    $locationProvider.hashPrefix("!");
    $locationProvider.html5Mode(false);
    $routeProvider.when('/', {template: './js/templates/home.html', controller:HelloWorldCtrl});
    $routeProvider.when('/other', {template: './js/templates/other.html'});
});

В индексном HTML нужно указать шаблоны:

<script type="text/ng-template" src="./js/templates/home.html"></script>
<script type="text/ng-template" src="./js/templates/other.html"></script>
person Brian McAuliffe    schedule 06.05.2014