В AngularJS, как я могу загружать скрипты, когда меняется вид?

В AngularJS он имеет возможность направлять раздел страницы с помощью ng-view. Это действительно хорошо для небольших проектов, но когда проекты становятся больше, они не очень хорошо масштабируются из-за невозможности загрузки скриптов в тег скрипта. Я видел несколько других сообщений, которые касаются этого, но я не могу найти решение для работы. Единственный способ заставить его работать (я считаю это хаком и не работает так, как мне хотелось бы), если я включаю все сценарии в верхней части базового Index.html.

То, что я хотел бы, - это когда представление изменяется, чтобы файлы Javascript в заголовке загружаемого представления загружались в этот момент, так как они будут фактически использоваться в этот момент и не должны предварительно загружать их в начало заявки.

http://plnkr.co/edit/7LMv0j2sAcjigPuW7ryv?p=preview

В демонстрационном проекте Index.html вызывает команду console.log, но я не могу заставить page1 или page2 вызвать команду log. Любая помощь будет принята с благодарностью.

Я использую Angular 1.3.0 Beta 11.

1 ответ

2 вещи, по вашему мнению, вам не нужно писать <html> или же <body> теги, у вас уже есть те на главной странице. Вы должны увидеть вид как часть главной страницы.

во-вторых, чтобы добавить javascript к своим представлениям, вы добавляете контроллер для представления следующим образом:

.config(function ($routeProvider) {
    $routeProvider
      .when('/page1', {
        templateUrl: 'page1.html',
        controller: function ($log) {
          $log.info('page 1');
        }
      })
      .when('/page2', {
        templateUrl: 'page2.html',
        controller: function ($log) {
          $log.info('page 2');
        }
      });
});

также возможно добавить контроллер к представлению как это:

var app = angular.module('routeApp', ['ngRoute']) 

.config(function ($routeProvider) {
    $routeProvider
      .when('/page1', {
       templateUrl: 'page1.html',
       controller: function ($log) {
          $log.info('page 1');
        }
      })
      .when('/page2', {
           templateUrl: 'page2.html',
           controller: 'ViewController'
      });
});

app.controller('ViewController', function ($log) {
  $log.info('page 2');
})

я обновил твой плункер: здесь

Другие вопросы по тегам