2017-04-26 89 views
1

我創建了一個通用的directive,我想在我們網站的任何Angular頁面中使用它。我不想強制每個頁面使用相同的變量app。我如何將此指令更改爲泛型,以便它可以作爲依賴項添加(當然包含爲單獨的js文件)?Angular - 通用指令

var app = angular.module('myapp', []); 

app.directive('helloWorld', function() { 
return { 
    restrict: 'AE', 
    replace: 'true', 
    scope: { 
    name: '@', 
}, 
template: '<h3 >Hello {{name}}</h3> ', 

    } 
    }; 
}); 
+1

而這裏提供的答案是有道理的,是什麼,我會建議使用,我覺得這個問題是有點混亂反正。什麼是「我不想強制每個頁面使用相同的應用程序變量」,意思是說,你是說你有多個不同的應用程序在運行?因爲一般的範例是角度應用程序中的每個「頁面」都是一個部分的看法,而控制器是什麼改變,而不是應用程序.... – Claies

+0

一個更好的方式來說,它將是,如何創建一個共同的資源,我可以分享任何角開發商 –

回答

2

您可以創建一個common模塊,聲明就可以了你的指令,並使用它作爲您的每個應用程序的模塊依賴。通過在應用程序模塊依賴關係中添加模塊,您將可以使用您的指令以及您在common模塊中聲明的每個提供者。

/common.module.js

;(function() { 

    var commom = angular.module('common', []); 

    commom.directive('helloWorld', function() { 
     return { 
      restrict: 'AE', 
      replace: true, 
      scope: { 
       name: '@', 
      }, 
      template: '<h3 >Hello {{name}}</h3> ', 
     }; 
    }); 

})(); 

/index.html

<html> 
... 
<body ng-app="myapp"> 

    <hello-world name="World"></hello-world> 

    <script src="angular.min.js"></script> 
    <script src="common.js"></script> 
    <script>  
     var app = angular.module('myapp', ['common']); 
    </script> 
</body> 
</html> 
+0

啊,所以訣竅是從靜態角度創建一個新的通用模塊 –