Javascript AngularJS和IILife
我已经开始学习AngularJS,在阅读一些代码示例时,我发现了以下内容:Javascript AngularJS和IILife,javascript,angularjs,Javascript,Angularjs,我已经开始学习AngularJS,在阅读一些代码示例时,我发现了以下内容: (function(app) { 'use strict'; app.directive('sideBar', sideBar); function sideBar() { return { restrict: 'E', replace: true, templateUrl: '/scripts/spa/layout/my
(function(app) {
'use strict';
app.directive('sideBar', sideBar);
function sideBar() {
return {
restrict: 'E',
replace: true,
templateUrl: '/scripts/spa/layout/mypage.html'
}
}
})(angular.module('common.ui'));
上面的代码使用IIFE创建一个自定义指令。我对代码的最后一行感到非常困惑。它正在传递一个名为common.ui的模块。有人能解释一下这种传递参数的方式是如何工作的,以及如何以不同的方式重写吗?如果没有最后的参数(传递angular.module),它将只是一个已定义但没有做任何事情的函数,没有名称就不能调用。帕伦斯夫妇正在立即调用它
就重写而言,可以使用名称定义它,然后调用它。因为它只会被调用一次,所以不需要给它命名。相反,它只是运行
使用IIFE还有其他原因(如封装数据或绕过异步代码的闭包),但在这种情况下,实际上只是避免命名然后调用。在()存在之前,上层函数不在范围内或不可见 您正在为上层函数定义参数并调用它。
angular.module('common.ui')
将被应用程序引用。看
你可以正常申报
(function() {
var app = angular.module('common.ui');
})();
angular.module('common.ui')
被app
引用。看见