2013-10-29 42 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