我与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
,我想尝试一种不同的方式来声明控制器,以便客户端无法修改它
答案 0 :(得分:2)
如果您在Angular中创建模块,则无法以这种方式对其进行模糊处理。在控制台中,用户只需运行angular.module('Organizer')
即可访问您的应用,然后调用他们想要的任何方法。
您的代码无法按照书面形式工作的原因是因为您没有将app
变量传递给您的匿名函数。因此,如果您想将控制器添加到Organizer
模块,那么您可以执行以下操作:
(function(angular)
{
angular.
module('Organizer').
controller('site', function($scope, $mdDialog)
{
...
});
})(angular);
答案 1 :(得分:1)
Theres无需在自动执行函数中包含任何此代码,就像您尝试将变量保留在全局范围之外一样。唯一一个全球性的是" 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用于实例化模块的第二个参数。后续调用省略第二个参数" get"模块。