Squeak.ru - шаблоны программирования

Контроллер не загружается

У меня есть следующий файл Index.html (я также поставил div с ng-view):

<ul ng-controller="myController">    
    <li>
        <a href="#/doit">Do it!</a>
    </li>
</ul>

конфиг маршрутов:

$routeProvider.when('/doit', {
        templateUrl: 'partials/doit.html'
        controller: 'myController'

    });

$routeProvider.otherwise({
        redirectTo: 'index.html'
    });

Контроллер:

app.controller('myController', ['$scope', '$location', function ($scope, $location) {

        $scope.name = "name";
        alert($scope.name);
        $location.path("/");    

    }]);

Странно то, что после того, как я нажимаю на ссылку Do it!, она переходит на http://localhost:3000/#/doit.html (код myController выполняется после клика, я вижу всплывающее окно с предупреждением), а затем я возвращаюсь к http://localhost:3000/#/index.html (это то, что я хочу, Я поставил $location.path("/") в контроллер.

Однако на этот раз по какой-то причине код контроллера не выполняется. Он запускается только после того, как я обновлю страницу, даже если она назначена ненумерованному списку. Кто-нибудь может помочь, пожалуйста?


  • это не работает при возврате с помощью кнопки «Назад» в браузере? 28.10.2015
  • Ну, я не могу вернуться, потому что, как только я попадаю на doit.html, меня перенаправляют на index.html. Вероятно, это как-то связано с $location.path(/). Документы говорят, что он изменяет URL-адрес в браузере (однако, как только Angular замечает изменение в строке URL-адреса, он просматривает правила маршрутизации и перенаправляет меня на index.html). Проблема в том, что код контроллера не запускается после загрузки index.html. (так и должно быть, у меня там есть директива ng-controller, верно?) 28.10.2015
  • и когда появляется ошибка? я не понимаю 28.10.2015
  • Хорошо, шаг за шагом: я нахожусь в index.html. Появляется всплывающее окно с предупреждением (оно находится в контроллере — alert($scope.name);). Затем я нажимаю <a href="#/doit">Do it!</a>. Снова появляется всплывающее окно с предупреждением. Он меня сразу перенаправляет на index.html (из-за $location.path("/")), и в этот раз ничего не происходит (нет окна алерта с именем), хотя это окно алерта должно появиться (оно в контроллере). Вывод - в этот раз контроллер не загружается... почему-то. 28.10.2015
  • я думаю, это потому, что он уже загружен - он появляется, когда вы нажимаете «сделать это ПОСЛЕ перезагрузки»? 28.10.2015
  • Я имею в виду, что строка alert(...) в контроллере не выполняется. Как я могу заставить его выполниться снова? 28.10.2015
  • это то, о чем я спрашивал - появляется ли предупреждение при нажатии на ссылку ПОСЛЕ перезагрузки? 28.10.2015
  • Оно должно появиться сразу после того, как $location.path("/"); перенаправит меня обратно на эту страницу. Не клики должны быть нужны. Но да, оно появляется снова после того, как я щелкну ссылку (но оно запускается в myController doit, а не index). Я хотел бы, чтобы окно появлялось до и после того, как я щелкну ссылку. 28.10.2015
  • вы разместили здесь только 1 контроллер 28.10.2015
  • это полезно: plnkr.co/edit/DVFG8T?p=preview? 28.10.2015
  • Да, я выложил 1 контроллер, потому что использую один контроллер для обоих. 28.10.2015
  • Вы проверили эту тему - stackoverflow.com/questions/20606833/, который предлагает добавить "ng-view". Если вы уже пробовали это, взгляните на это — bennadel.com/blog/ — внедрить '$route' в ваш контроллер (нет необходимости его использовать) и, вероятно, слушать ' $routeChangeSuccess' и посмотрите, попадаете ли вы в прослушиватель в обоих случаях - github.com/angular/angular.js/blob/master/src/ngRoute/directive/ 28.10.2015
  • что насчет этого? stackoverflow.com/questions/17413760/ 29.10.2015

Ответы:


1

Ваша конфигурация маршрутов должна быть примерно такой:

$routeProvider.
  when('/', {
    templateUrl: '/index.html',
    controller: 'homeCtrl'
  }).
  when('/doit', {
    templateUrl: 'partials/doit.html',
    controller: 'myController'
  }).
  otherwise({
    redirectTo: '/'
  });

и вам не нужно указывать имя контроллера в двух местах, то есть в частичной конфигурации и в конфигурации маршрута, достаточно указать на уровне конфигурации.

Представление doit должно быть тем, которое загружается в тег ng-view, так как это состояние вашего приложения.

28.10.2015
Новые материалы

Угловая структура архитектуры
Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

«Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

Создайте API с помощью Python FastAPI
Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

Веселье с прокси-сервером JavaScript
Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...