コントローラーnavCtrl
を使用して、ヘッダーHTMLに指示文click-anywhere-but-here
を使用しようとしています。角度はエラーを投げている:角度指示命令のロードオーダー:コントローラーで使用したときの不明なプロバイダー
Unknown provider: clickAnywhereButHereProvider <-
私は、これは私はJSファイルを連結しgulp
を使用していますどのように関係していると思っています。私は連結されたmain.js
ファイルをすべてのJSとチェックし、navCtrl
がclickAnywhereButHere
指令の上に定義されていることを確認してください。コントローラーが指令をまったく使用していないため、この問題が起きた場合は、header.html
ファイルのみが問題であるかどうかは不明です。
<header ng-controller="navCtrl">
<a click-anywhere-but-here="clickedSomewhereElse()" ng-click="clickedHere()">
<li>study</li>
</a>
</header>
どのように私はclickAnywhereButHere
ディレクティブが文句を前にロードされるまで待つようにヘッダを強制することができますか?
編集:コード:
navCtrl.js
:私は関係のない多くのコードを全焼しました
angular
.module('DDE')
.controller('navCtrl', ['$rootScope', '$location', '$scope', 'Modal', 'Auth', '$window', '$state', 'deviceDetector',
function($rootScope, $location, $scope, Modal, Auth, $window, $state, deviceDetector) {
$scope.clicked = '';
$scope.clickedHere = function(){
$scope.clicked = 'stop that';
console.log('clicked on element');
};
$scope.clickedSomewhereElse = function(){
console.log('clicked elsewhere');
$scope.clicked = 'thanks';
};
$scope.headings = [
{page: 'contact', route: '#/contact'}
];
}
]);
clickAnywhereButHere.js
ディレクティブ:
angular.module('DDE')
.directive('clickAnywhereButHere', function($document, clickAnywhereButHereService){
return {
restrict: 'A',
link: function(scope, elem, attr, ctrl) {
var handler = function(e) {
e.stopPropagation();
};
elem.on('click', handler);
scope.$on('$destroy', function(){
elem.off('click', handler);
});
clickAnywhereButHereService(scope, attr.clickAnywhereButHere);
}
};
});
clickAnywhereButHereService.js
サービス:
angular.module('DDE')
.factory('clickAnywhereButHereService', function($document){
var tracker = [];
return function($scope, expr) {
var i, t, len;
for(i = 0, len = tracker.length; i < len; i++) {
t = tracker[i];
if(t.expr === expr && t.scope === $scope) {
return t;
}
}
var handler = function() {
$scope.$apply(expr);
};
$document.on('click', handler);
// IMPORTANT! Tear down this event handler when the scope is destroyed.
$scope.$on('$destroy', function(){
$document.off('click', handler);
});
t = { scope: $scope, expr: expr };
tracker.push(t);
return t;
};
});
ディレクティブとサービスの両方が私のmin
ファイル内に存在している:あなたは、アカウントにそのyour JS is minified事実を取る必要があり
へ
はあなたが 'navCtrl'私たちを見ることができます変更しますか? –
@mparnisariが上に追加されました – Growler
あなたの.minファイルに 'clickAnywhereButHereService'が存在しないかのように聞こえます –