使用IIFE时,AngularJS无法找到组件

时间:2016-12-16 14:58:53

标签: angularjs django

angularjs样式指南建议使用IIFEs来包装角度组件。然而,当我试图按照例子包裹我的时候,我遇到了他们被隐藏的问题。来自angularjs并且无法加载它们

page.html中

void forksystem(char* command){
    pid_t pid;
    int status = 0;
    pid = fork();
    if(pid == 0){
      system(command);
      exit(1);
    }
    wait(&status);
}

MY-app.js

<script type="text/javascript" src="my-module.js" %}"></script>
<script type="text/javascript" src="my-module-controller.js" %}"></script>

<div ng-app="my.app" ng-controller="MyAppController">
     {{ somevar }}
</div>

MY-APP-controller.js

(function() {
'use strict';

    angular
        .module('my.app', []);
});

这会导致错误:

(function() {
    'use strict';

    angular
        .module('my.app')
        .controller('MyAppController', MyAppController);

    function MyAppController() {
        ....
    }
});

如果我在模块声明中删除了IIFE,那么我还剩下以下内容:

Uncaught Error: [$injector:modulerr] Failed to instantiate module my.app due to:
Error: [$injector:nomod] Module 'my.app' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.

它的工作原理是,下一个错误是:

'use strict';

angular
    .module('my.app', []);

如果从控制器定义中删除IIEF,一切都按预期工作。

这显然是一个精简的例子,在我从Django服务器提供此页面的实际项目中,虽然我无法判断它是否相关。

1 个答案:

答案 0 :(得分:2)

那些不是IIFE的。您没有调用该函数。以}()); or })();

结尾
(function() {
    'use strict';

    angular
        .module('my.app')
        .controller('MyAppController', MyAppController);

    function MyAppController() {
        ....
    }
})();