2013-10-29 44 views
0

Angular JS非常新,非常适合我。此控制器工作得很好:Angular JS - 从JS文件加载控制器

function airlineRouter($routeProvider) { 
    $routeProvider 
     .when('/', 
      { 
       templateUrl:"partials/destinations.html", 
       controller: function($scope) { 
        $scope.setActive('destinations'); 
       } //end controller 
     }); 
} //end airlineRouter 

当我使控制器它是自己的JS文件,它不再工作。就像这样:

function airlineRouter($routeProvider) { 
    $routeProvider 
     when('/', 
      { 
       templateUrl:"partials/destinations.html", 
       controller: "DestinationsCtrl" 
      }); 
} //end airlineRouter 

我的控制文件驻留在“根/ JS /控制器/ destinations.js”,这是我的“app.js”文件所在的文件夹。完整的“app.js”文件是这样的:

angular 
    .module('airline', ['ngRoute']) 
    .config(airlineRouter); 

function airlineRouter($routeProvider) { 
    $routeProvider 
     .when('/', 
      { 
       templateUrl:"partials/destinations.html", 
       controller: "DestinationsCtrl" 
      } 
     ); 
} //end airlineRouter 

我的完整控制器JS文件看起来像这样:

function DestinationsCtrl($scope) { 
    $scope.setActive('destinations'); 
} //end DestinationsCtrl 

为什么将函数名不是我的控制器的负载,因为这啧啧我我在做什么? tut的文件似乎工作。我的不是。帮助和感谢!

编辑:控制台日志显示此:错误:[NG:AREQ]参数“DestinationsCtrl”不是一个函数,得到了不确定

编辑2:我是工作在被称为“嵌套作用域”啧啧,如果这让任何人都能更好地了解我想要做的事情。

+0

什么是您的装货单? – charlietfl

+0

一个建议是设置使用'var app = module('''''...'然后用于控制器'app.controller('DestinationsCtrl',函数($ scope)...' – charlietfl

+0

oops ...'var app = angular.module('airline'...'left out'angular' – charlietfl

回答

1

好的,就像我说的,我是AngularJS的新手,而且我很白痴。我没有在我的index.html文件中将我的外部JS脚本链接放在我的<head>中。而已。我不敢相信我忽略了这一点。

0

尝试改变你的控制器声明:

angular.module('airline') 
     .controller('DestinationsCtrl',function($scope){ 
     $scope.setActive('destinations'); 
     }); 

然后如预期该控制器将工作。

希望这对你有所帮助。

+0

这部分内容的全部目的是显示控制器可以在外部/单独的文件我的第一个例子工作,但是一旦我将它移动到一个外部文件(参见上面的路径),它没有看到它,它似乎是一个非常好的管理/重用逻辑的方式。 – Brent