如何将一个模块用于多个控制器

时间:2017-06-17 10:15:59

标签: javascript angularjs

当这些控制器位于不同的js文件中时,如何将一个模块用于多个控制器。

我有3个js文件 app.js 2.登录。 JS 3. Register.js

app.js

  var app = angular.module("myApp", ['ngRoute']);
 app.config(function ($routeProvider) {
   $routeProvider.when('/', {
    templateUrl: 'Login/login.html',
    controller: 'myCtrl'
})

.when('/register', {
    templateUrl: 'Register/register.html',
    controller: 'registerCntrl'
})

})

Login.js

var app = angular.module("myApp");
  app.controller("myCtrl", function ($scope) {

$scope.login = function (data) {
    console.log(data);
    if (data.name == 'pinku' && data.pswd == '1234') {
        console.log("Login Successfull");
    } else {
        console.log("Not successful");
    }
};
$scope.moreInfo = function () {
    alert("M in more info");
}

});

Register.js

   var app = angular.module("myApp");
   app.controller("registerCntrl", function ($scope) {

});

我已经在app.js文件中定义了mymodule,现在我想将我的控制器注册到该模块,控制器在不同的类中。我在app.js中注入了ng-Route。在登录m中使用已定义的模块但是出现错误

'由于:'

,无法实例化模块ngRoute

提前致谢

2 个答案:

答案 0 :(得分:1)

如果您先加载app.js,则可以在其他文件中注入模块,如

app = angular.module("myApp");

请注意,我从函数调用中省略了[]。这意味着您正在尝试获取已定义的模块。

答案 1 :(得分:1)

你可以这样做:

angular.module("myApp")
.controller(...)

对于两个控制器,而不是在这里写变量

注意: app.js 应该在任何控制器之前加载。

这是可行的方法之一:

<html ng-app="myApp">
<head>
    <title></title>
</head>
<body>

    <script type="text/javascript" src="app.js"></script>
    <script type="text/javascript" src="controller1.js"></script>
    <script type="text/javascript" src="controller2.js"></script>
</body>
</html>

除此之外,您还可以使用gulp OR grunt之类的任务运行程序自动执行此操作。