Javascript 什么';扩展angularjs指令功能的最佳方式是什么?

Javascript 什么';扩展angularjs指令功能的最佳方式是什么?,javascript,angularjs,controller,directive,Javascript,Angularjs,Controller,Directive,我有一个指令来创建一个元素列表来控制分页和过滤器,我在应用程序的几个点上使用它 我想知道向指令中添加自定义方法的最佳方法是什么 例如: angular.module('example').directive('list', function () { return { scope: { elements: '=ngModel', filters: '=?' }, restrict: 'E',

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

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

例如:

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>

我使用的指令如下:

<list elements="elements">
    <div ng-controller="CustomMethodsController">
        <div class="col-xs-6">
            {{result.element_1}}
        </div>
        <div class="col-xs-6">
            {{result.element_2}}
        </div>
    </div>
</list>

{{result.element_1}}
{{result.element_2}}
我不知道在指令中创建控制器是一种好的做法,还是有更好的方法来实现这一点


提前感谢。

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

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

但是你可以给控制器内部指令。虽然这样做会更好,但是你可以有嵌套指令。

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

但是如果我使用该指令6次,并且每次使用它,我都需要一个自定义方法来专门化工作,我是否应该将所有自定义函数都放在该指令中?在其他控制器中专门化函数不是更好吗?这就是我所说的。您可以使用具有功能的服务。您可以将其注入所需的控制器并使用其功能。是的,我同意您可以为此设置一个服务或工厂。所有绑定逻辑都应该位于控制器内部,而业务逻辑可以位于服务/工厂中。不,我需要专门化指令的特定实例