В 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');
})
я обновил твой плункер: здесь