2016-04-15 125 views
0

我有一個指令來創建一個元素列表來控制分頁和過濾器,我在我的應用程序的幾個點使用它。什麼是擴展angularjs指令功能的最佳方式?

我想知道什麼是自定義方法添加到指令的最佳方式。

例子:

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> 

我不知道是否創建一個控制器在指令內部是一種好的做法,或者有更好的方法來實現這一點。

在此先感謝。

回答

0

您已經指定在該指令的控制器destination.You需要使用:

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

但是,是的,你可以給內部directives.Although控制器的更好,如果你正在做的,你可以嵌套指令。

+0

但是,如果我使用指令6次,每次使用它我需要一個自定義的方法來專門工作,我應該把所有的自定義函數內的指令?在其他控制器中的功能沒有更好的專門化? – Sergio

+0

這就是我所說的。你可以有一個功能的服務。你把它注入你需要的控制器並使用它的功能。 –

+0

是的,我同意你可以有一個服務或工廠的。所有你的綁定邏輯應該在控制器內,而你可以在你的服務/工廠的業務邏輯。 –

0

如果你要在多個控制器上共享某個東西,你可以創建一個服務並將其注入到使用它的控制器中。

+0

不,這是我需要專門指定特定實例的指令 – Sergio

相關問題