[英]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.