Angularjs 在使用指令时,对控制器有一个单独的定义是一种好的做法吗

Angularjs 在使用指令时,对控制器有一个单独的定义是一种好的做法吗,angularjs,Angularjs,我是个新手。我一直在试验“指令”。在使用指令时,我发现以下两种方法可以将控制器与指令一起使用 方法1 angular.module('folderSettingApp') .directive('templateRenderer', function () { return { // other options , controller: 'GridController' }; }); 方法2 an

我是个新手。我一直在试验“指令”。在使用指令时,我发现以下两种方法可以将控制器与指令一起使用

方法1

angular.module('folderSettingApp')
    .directive('templateRenderer', function () {
        return {
            // other options
            , controller: 'GridController'
        };
    });
方法2

angular.module('folderSettingApp')
    .directive('templateRenderer', function () {
        return {
            // other options
            , controller: function ($scope, $attrs) {
               // add some functions here
            }
        };
    });

我不确定使用哪种方法,如果您有任何建议,我将不胜感激。

使用哪种方法并不那么普遍,这取决于您的使用

例如,如果要在应用程序中多次使用指令,最好不要在指令中定义任何控制器,如下所示:

.directive('exampleDirective', function (){
    return {
        restrict: "A", // OR E OR AE OR C
        template: "<div>YOUR TEMPLATE HERE</div>",
        link: function (scope, element, attributes) {
            // what ever function you want whould be here:
        }
    }
});
.directive('exampleDirective',函数(){
返回{
限制:“A”、//或E或AE或C
模板:“你的模板在这里”,
链接:功能(范围、元素、属性){
//你想要什么样的功能在这里:
}
}
});
但一般来说,为了angular的模块化,在指令中定义控制器不是一个好主意

因为指令的目的是在多个控制器和多个视图中使用它


因此,在指令中定义控制器,只会使该指令的模块化程度降低,使用受到限制。

单独控制器的一个参数是为了便于测试。编写实例化并允许您在单独的控制器上测试单个代码的测试一点也不难