扩展angularjs指令功能的最佳方法是什么?

时间:2016-04-15 08:35:44

标签: javascript angularjs controller directive

我有一个指令来创建一个控制分页和过滤器的元素列表,我在我的应用程序的几个点上使用它。

我想知道在指令中添加自定义方法的最佳方法是什么。

示例:

bind

我的指令模板如下:

angular.module('example').directive('list', function () {
    return {
        scope: {
            elements: '=ngModel',
            filters: '=?'
        },
        restrict: 'E',
        transclude: true,
        templateUrl: '/static/templates/list.html',
        controller: function () {
            // Some stuff of pagination and filters functions
        }
    }
}

我使用这样的指令:

<div class="list">
    <!-- Pagination stuff -->

    <div ng-transclude></div>

    <!-- Pagination stuff -->
</div>

我不知道在指令中创建控制器是否是一种好习惯,或者有更好的方法来实现这一点。

提前致谢。

2 个答案:

答案 0 :(得分:0)

您已在指令目标中指定了控制器。您需要使用它:

     scope: {
        elements: '=ngModel',
        filters: '=?'
    },
    restrict: 'E',
    transclude: true,
    templateUrl: '/static/templates/list.html',
    **controller: function () {
        // Some stuff of pagination and filters functions
    }**

但是,你可以在控制器内部给出控制器。虽然你做的更好,你可以使用嵌套指令。

答案 1 :(得分:0)

如果您要在多个控制器之间共享,则可以创建服务并将其注入使用它的控制器中。