繁体   English   中英

AngularJS:在匿名函数内部的模块上注入控制器

[英]Angularjs: inject Controller on module inside anonymous function

我对javascript有点陌生,我开始使用angular.js

所以我的问题是是否有一种方法可以在匿名函数中声明的模块内注入控制器

我的代码看起来像这样

app.js

(function(angular) {
    var app = angular.module('Organizer', ['ngMaterial', 'ngAnimate', 'ngAria']);
})(angular);

siteController.js

(function(angular, app) {
    app.controller('site', function($scope, $mdDialog)
    {
        var alert = $mdDialog.alert({
            title: 'Test',
            content: 'Testing',
            ok: 'Exit'
        });

        $mdDialog.show(alert);
    });
})(angular);

我试图寻找可能的方法,但我仍然想看看这里是否有人可以解释如何做到这一点。

注意:我之前已经使用过angular.js ,我想尝试一种不同的方法来声明控制器,因此客户端将无法修改它。

如果在Angular中创建模块,则无法以这种方式对其进行混淆。 在控制台中,用户只需运行angular.module('Organizer')即可访问您的应用,然后在其上调用他们想要的任何方法。

您的代码无法按编写方式工作的原因是,您没有将app变量传递给匿名函数。 因此,如果要将控制器添加到Organizer模块,则可以执行以下操作:

(function(angular)
{
    angular.
      module('Organizer').
      controller('site', function($scope, $mdDialog)
      {
          ...
      });
})(angular);

无需将这些代码中的任何一个包装在自执行函数中,就好像您试图将变量保持在全局范围之外。 唯一的全局对象是“角度”对象。

您的app.js应该只有

'use strict';
angular.module('Organizer', ['ngMaterial', 'ngAnimate', 'ngAria']);

您的控制器文件应仅具有

'use strict';
angular.module('Organizer').controller('siteController', function($scope, $mdDialog) {
    var alert = $mdDialog.alert({
        title: 'Test',
        content: 'Testing',
        ok: 'Exit'
    });

    $mdDialog.show(alert);
});

app.js中对模块的第一次调用传递了第二个参数,angular用于实例化您的模块。 随后的调用将忽​​略第二个参数“获取”模块。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM