使用指令时,为控制器设置单独的定义是一个好习惯

时间:2014-06-18 08:22:16

标签: angularjs

我是棱角分明的新人。我一直在尝试"指令"。当使用指令时,我发现以下两种方法将控制器与指令一起使用。

方法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
            }
        };
    });

我不知道什么方法可以使用,任何建议都会受到赞赏。

2 个答案:

答案 0 :(得分:1)

根据您的使用情况,使用哪一个并不是那么普遍,

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

.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:
        }
    }
});

但一般来说,为了角度的模块性,在指令中定义控制器并不是一个好主意。

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

因此,在指令中定义一个控制器,只是使该指令在限制使用时不那么模块化。

答案 1 :(得分:0)

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