2017-05-18 145 views
1

我想添加幾個自定義角度指令,以在多個視圖上調用。這麼說,下面是我怎麼有代碼設置構造自定義角度指令

app.js

angular 
    .module('app', [ 
     'app.routes', 
     'app.config', 
     'app.users', 
     'app.plans' 
    ]); 

usersCtrl.js

angular 
    .module('app.users.controllers') 
    .controller('usersCtrl', usersCtrl) 

usersCtrl.$inject = ['$scope', '$http', '$window']; 

function usersCtrl($scope, $http, $window) { 
    /*controller code here*/ 
} 

plansCtrl.js

angular 
    .module('app.plans.controllers') 
    .controller('plansCtrl', plansCtrl) 

plansCtrl.$inject = ['$scope', '$http', '$window']; 

function plansCtrl($scope, $http, $window) { 
    /*controller code here*/ 
} 

現在如果我添加指令說下面的用戶如下

個usersCtrl.js用指令附加

angular 
    .module('app.users.controllers') 
    .controller('usersCtrl', usersCtrl) 
    .directive('myFirstDirective', ['$window', function($window) { 
     return { 
      restrict: 'A', 
      link: function (scope, element, attrs) 
      { 

       alert('my first directive') 

      } 
     }; 
    }]); 

usersCtrl.$inject = ['$scope', '$http', '$window']; 

function usersCtrl($scope, $http, $window) { 
    /*controller code here*/ 
} 

與上面的設置,如果我叫指令的用戶查看它的作品,因爲它應該,但這時如果我平面圖中調用它,它也適用。那就是說,結構指令的最佳方式是什麼),在哪裏放置自定義指令並訪問需要的地方。

+0

你是什麼意思_「結構指令的最佳方式」_和_「在哪裏放置自定義指令並訪問需要的地方」_?請讓你的問題更具體 –

+0

想要創建一些幫助指令,比如圖片上傳,並在需要時調用它們 – user1751287

回答

1

由於您的指令是模塊獨立的,可以在不同的模塊之間共享,我的建議是創建一個commonmodule並在該模塊中聲明您的指令。然後,您可以像註冊其他模塊一樣註冊到全局應用程序並使用它。

angular 
    .module('app', [ 
     'app.routes', 
     'app.config', 
     'app.commonmodule', 
     'app.plans' 
     'app.users', 
     'app.plans' 
    ]); 
0

我認爲你沒有正確使用指令。

From AngularJS documentation:

在高層次上,指令是一個DOM元素上的標記(如 屬性,元素名稱,註釋或CSS類),告訴AngularJS的 HTML編譯器($編譯)裝該元素的指定行爲(例如,通過事件偵聽器),甚至轉換DOM元素及其子元素。

在上面的代碼中,您的指令與DOM元素無關。它只是發送一個警報。因此,您應該創建Service而不是指令來執行此操作。