在AngularJS中,如何在View更改时加载脚本?

时间:2014-06-16 19:06:11

标签: javascript angularjs requirejs angularjs-view

在AngularJS中,它可以使用 ng-view 路由页面的一部分。这对于较小的项目来说非常好,但随着项目变得越来越大,由于无法在脚本标记中加载脚本,因此无法很好地扩展。我已经看过其他一些关于此的帖子,但我无法找到解决方案。我可以让它工作的唯一方法(我认为它是一个黑客并且不按照我希望的方式工作)是我将所有脚本包含在基础 Index.html的顶部

我想要的是当视图发生变化时,在加载View的标题中加载Javascript文件,因为它们将在那时实际使用,而不必预先加载他们在申请开始时。

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

在演示项目中,Index.html调用了console.log命令,但我无法通过page1或page2来调用log命令。任何帮助将不胜感激。

我使用的是Angular 1.3.0 Beta 11。

1 个答案:

答案 0 :(得分:0)

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');
})

我更新了你的plunker:Here