0

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

我想要的是当视图更改为在正在加载的视图的标题中加载 Javascript 文件时,因为它们将在那时实际使用,而不必在应用程序的开始。

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

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

我正在使用 Angular 1.3.0 Beta 11。

4

1 回答 1

0

两件事,在您看来,您不必编写<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:这里

于 2014-06-16T19:17:38.437 回答