RequireJS和AngularJS多个控制器

时间:2014-02-20 22:31:09

标签: javascript angularjs requirejs angularjs-controller

我正在使用最新版本的Require和Angular,但我遇到了奇怪的错误。我有每个视图的控制器,但显然只适用于一个视图。这是我的示例代码:

定义所有控制器:Controllers.js

define([
   'modules/index/controller',
   'modules/test/controller'
], function(){});

这里只适用于一个控制器,如果我像这里一样包含2我得到错误:ng:areq 坏论据

索引:controller.js

define(['angular'], function(angular){

   'use strict';

   return angular.module('myApp.controllers', [])

   .controller('indexCtrl', ['$scope' , function ($scope){
        alert("index ok");
   }]);

});

测试:controller.js

define(['angular'], function(angular){

   'use strict';

   return angular.module('myApp.controllers', [])

   .controller('testCtrl', ['$scope' , function ($scope){
    alert("test ok");
    }])

});

我哪里错了?

1 个答案:

答案 0 :(得分:3)

问题是您正在创建myApp.controllers模块两次,一个正在覆盖另一个。假设您在加载控制器后手动引导角度,您应该首先创建模块,然后加载该模块以创建控制器:

<强> app.js

define(['angular'], function(){
   'use strict';
   return angular.module('myApp.controllers', []);
});

索引:controller.js

define(['app'], function(app){
   'use strict';
   return app.controller('indexCtrl', ['$scope' , function ($scope){
        alert("index ok");
   }]);
});

测试:controller.js

define(['app'], function(app){
   'use strict';
   return app.controller('testCtrl', ['$scope' , function ($scope){
    alert("test ok");
    }])
});

我创建angularAMD以方便您使用可能感兴趣的RequreJS和AngularJS:

http://marcoslin.github.io/angularAMD/