AngularJS指令返回之前要做什么?

AngularJS指令返回之前要做什么?,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我在问自己,在用AngularJS定义指令时,在return语句之前,你能在中放些什么 angular.module('app').directive('myDir', function() { // What can you do here? return { restrict: 'E', link: function(scope, element) { // do things } }; });

我在问自己,在用AngularJS定义指令时,在
return
语句之前,你能在中放些什么

angular.module('app').directive('myDir', function() {
    // What can you do here?
    return {
        restrict: 'E',
        link: function(scope, element) {
            // do things
        }
    };
});
因此,一些一般性问题是:

1。你能在那里做什么
2.只有在那里才能发生什么
3.在那里不应该做什么?



我发现有一件事很有用,那就是你可以在其中存储变量或函数,然后在指令的定义中使用它们,但我想听听其他的建议。

好吧,因为还没有其他人回答过。。。正如我在评论中提到的,wiki页面有一些有用的信息

第一次遇到指令时,Angular将运行指令函数一次。因此,无论您在这里放置什么,都只会执行一次(如果该指令未在应用程序中的任何位置使用,则可能执行零次)。因此,如果可以在所有指令实例之间共享某些内容,您可以将其放在这里:函数、指令全局变量、一次性初始化等

请注意,您在此处放置的任何函数都将相当有限。它们将无法访问范围、元素或属性,除非您将它们作为参数传入。因此,compile或link函数使用的函数通常放在compile或link函数中,因为这样它们就可以通过JavaScript闭包访问作用域、元素和属性。页面上的两个示例指令可以做到这一点。

请参阅关于“InjectingFunction”的注释。