簡體   English   中英

角度指令控制器最佳實踐

[英]Angular Directive Controller best practice

哪一種是定義指令控制器的最佳方法。 我提到了一些網站,他們解釋了Option1。

選項1:

angular.module('app')directive('AppHeader', AppHeader);

function AppHeader() {
  var headerDirective = {
     restrict: 'E',
     templateUrl: 'header.html',
     link: linkFunc, 
     controllerAs: 'vm',
     controller: NavCtrl
   };
   return headerDirective;

   function linkFunc(scope, element, attrs) {
      /* */
   }
}

NavCtrl.$inject = ['$scope', 'Service'];
function NavCtrl($scope, Service) {
    var vm = this;
    /* Controller actions */
}

在以上代碼中,控制器與指令功能塊分開。

選項2:

 angular.module('app').directive('AppHeader', AppHeader);

 function AppHeader() 
 {
     var headerDirective = {
        restrict: 'E',
        templateUrl: 'header.html',
        link: linkFunc, 
        controllerAs: 'vm',                
        controller: NavCtrl
      };

     return headerDirective;

     function linkFunc(scope, element, attrs) {
        /* */
     }
     NavCtrl.$inject = ['$scope', 'Service'];
     function NavCtrl($scope, Service) {
        var vm = this;
        /* Controller actions */
     }
}

在以上代碼中,控制器在指令功能塊中添加。

因此,哪種最佳實踐是創建和定義Directive控制器的原因,以及原因。 提前致謝。

關於選項2,您已將功能的范圍限定為實際使用的位置。

在選項1中,您已將函數的作用域范圍定為更高的級別,無需將其定為更高的級別,因為它不會被重用。

我覺得選項2可以使函數正確確定范圍。

此外,您可能希望將整個Option 2代碼包含在IIFE(立即調用的函數表達式)中

(function(){
   //Your code here

})();

您應該選擇選項1,因為。

指令的控制器應位於指令的閉包之外。 這樣,您可以消除可能的問題,即在返回后將注入創建為無法訪問的代碼。

您應該閱讀John Papa的樣式指南 ,他解釋了有關angular語言代碼樣式的所有事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM