2014-10-01 91 views
0

在閱讀了一些教程後,我組織了我的應用程序,使得有一個控制器模塊,它們是應用程序的依賴項。我會讓控制器模塊調用點控制器來創建一個新的控制器。我用我的一些代碼完成了這個工作。我試着添加另一個控制器,並且相同的代碼不起作用。任何人都可以告訴我爲什麼下面的代碼段不適用於添加控制器。angularjs錯誤定義控制器

// ffpApp.js 
ffpApp = angular.module("ffpApp", 
      ['ngRoute', 
      'ffpControllers', 
      'ffpServices']); 

/* Controllers */ 
var ffpControllers = angular.module('ffpControllers', []); 

/* Services */ 
var ffpServices = angular.module('ffpServices', ['rails']); 

這是我定義我的控制器的文件。

// createnew_controller.js 

'use strict'; 

/* Controllers */ 
var ffpControllers = angular.module('ffpControllers'); 

// 
// This section of code works. 
// 
angular.module('ffpApp').controller('MyController', ['$scope', function ($scope) { 
    console.log("hello world"); 
}]); 


// 
// This section FAILS; argument not a function got Undefined when 
// trying to use it in ffpApp.js 
// 
ffpControllers.controller('MyController', ['$scope', function ($scope) { 
    console.log("hello world"); 
}]); 
+1

似乎有沒有在粘貼代碼中的任何錯誤。您可能錯過了一些相關信息。 「試圖在ffpApp.js中使用它」是什麼意思? – PSL 2014-10-01 23:44:16

+0

我想在定義路由並指定控制器名稱時使用它。 – 2014-10-02 00:36:16

回答

0

您正在工作的控制器已添加到名爲'ffpApp'的模塊中,即主App模塊不是專用控制器模塊。 兩個控制器都有相同的名稱,即'MyController'。

代碼:

var ffpControllers = angular.module('ffpControllers'); 

正在創造另一個模塊相同的名稱作爲您的主要應用模塊,但沒有相關性。這段代碼需要刪除。

請嘗試以下方法。確保文件包含在index.html文件中。

APP.JS

/*================================================================ 
Module - main App module 
dependencies injected include the controllers module and services module 
=================================================================*/ 
angular.module("ffpApp", ['ngRoute', 'ffpControllers', 'ffpServices']); 

CONTROLLERS.JS

/*================================================================ 
Module - Just for Controllers 
Define your controllers in this file also 
=================================================================*/ 
angular.module('ffpControllers', []) 

//Controller 1 
.controller('MyController1', function ($scope) { 
    console.log("hello from controller 1"); 
}) 

//Controller 2 
.controller('MyController2', function ($scope) { 
    console.log("hello from controller 2"); 
}); 

SERVICES.JS

/*================================================================ 
Module - Just for Services 
Define your services in this file below the module 
=================================================================*/ 
angular.module('ffpServices', []);