2015-06-04 54 views
1

我對angularJS相當陌生,這裏是我的建議問題。如何在路由提供者中注入控制器

我有一個route.js文件,它只存儲路由相關的東西。 看起來像這樣。

var app = angular.module('ontology', ['ngRoute']); 

app.config(['$routeProvider', function ($routeProvider) { 
    $routeProvider 
     .when('/abduction', { 
      templateUrl: '/partials/abduction.html', 
      controller: 'axiomFormCtrl', 
     }) 
     .when('/logicDifference', { 
      templateUrl: '/partials/logicDifference.html', 
      controller: 'axiomFormCtrl', 
     }) 
    .otherwise({ redirectTo: '/' }); 
}]); 

,我有另外一個文件ontology.js擁有所有的控制器和控制器的一個是axiomFormCtrl。

var app = angular.module('ontology', ['ngResource', 'ngRoute']); 

app.controller('axiomFormCtrl', function ($scope, $http) { 
    console.log("in axiom form ctrl...."); 
}); 

現在如果我運行該程序,它會說axiomFormCtrl is undefined。我不知道如何解決依賴關係問題。

+0

您是否在您的index.html文件中加載了ontology.js腳本? – Okazari

+0

您是否在html文件中包含對腳本的引用? – Tom

+4

它看起來像你正在定義應用程序兩次......這可能會導致一個問題。 – Mike

回答

3

首先,確保你包括你的HTML腳本ontology.js

... 
<script src="routes.js"></script> 
<script src="ontology.js"></script> 

其次,您要定義模塊的兩倍,在這裏:

var app = angular.module('ontology', ['ngRoute']); 

在這裏:

var app = angular.module('ontology', ['ngResource', 'ngRoute']); 

因此,定義它一次,所有需要的模塊。這可能會在文件中完成稱爲app.js(你還需要在你的HTML包括):

app.js

(function() { 
    var app = angular.module('ontology', ['ngResource', 'ngRoute']); 
})(); 

然後在所有其他文件將使用ontology model ,使用相同的語法,減去第二個參數(其它模塊的陣列):

routes.js

(function() { 
    var app = angular.module('ontology'); 

    app.config(['$routeProvider', function ($routeProvider) { 
     $routeProvider 
      .when('/abduction', { 
       templateUrl: '/partials/abduction.html', 
       controller: 'axiomFormCtrl', 
      }) 
      .when('/logicDifference', { 
       templateUrl: '/partials/logicDifference.html', 
       controller: 'axiomFormCtrl', 
      }) 
     .otherwise({ redirectTo: '/' }); 
    }]); 
})(); 

而且ontology.js

(function() { 
    var app = angular.module('ontology'); 

    app.controller('axiomFormCtrl', function ($scope, $http) { 
     console.log("in axiom form ctrl...."); 
    }); 
})(); 
+0

是的,這是根本原因。謝謝。 –

相關問題