/ / AngularJS: Pourquoi ma directive ne peut-elle pas utiliser $ scope? - javascript, angularjs, requirejs

AngularJS: Pourquoi ma directive ne peut pas utiliser $ scope? - javascript, angularjs, exigjs

J'ai écrit un module angulaire très simple qui permet une navigation par onglets (le code est simplifié, mais ne fonctionne pas non plus):

module.js

define(["angular","./controller","./tabs","./pane"],function(tabsController,tabs,pane){

var module = angular.module("tabsModule",[])
.controller("tabsController",["$scope",tabsController])
.directive("tabs",tabs)
//.directive("pane",pane);
return module;
});

tabs.js

define([], function() {
function tabs() {
var directive = {
restrict: "E",
controller: "tabsController",
scope: true,
templateUrl: "html/directives/tabs.html",
link: {
pre: function(scope, element, attrs, controller) {
scope.addPane = controller.addPane.bind(controller);
scope.select = controller.select.bind(controller);

}
},
//    transclude: true,
};
return directive;
}
return tabs;
});

controller.js

define(["controllers/prototypes/base_controller"],function(BaseController){
var TabController=BaseController.extend({
constructor:function($scope){
BaseController.call(this,$scope);
this.$scope.panes = [];
this.directivesEvents=directivesEvents;
},
addPane:function(pane) {
if (pane.order === 0) {
this.$scope.select(pane);
}
this.$scope.panes = this.$scope.panes.concat(pane).sort(function(a, b) {
return a.order - b.order;
});
},
select:function(pane) {
angular.forEach(this.$scope.panes, function(pane) {
pane.selected = false;
});
pane.selected = true;
this.$scope.$emit(this.directivesEvents.TAB_CHANGE, pane.id);
}
});
var TabController=function($scope){

};
TabController.$inject=["$scope"];
return TabController;
});

et j'inclus le module dans un autre:

var directives=angular.module("directives",["tabsModule"]);

Mais quand je l'utilise, j'ai cette erreur:

Erreur: [$ injector: unr] Fournisseur inconnu: $ scopeProvider <- $ scope <- tabsDirective

Je n'ai aucune idée d'où ça vient, j'ai "fait des dizaines de modules / directive, et je pense avoir fait celui-ci comme je le fais toujours ...

Je suis coincé dessus pendant des heures, s'il vous plaît aider !!!!

Modifier: Je ne l’ai pas précisé, mais j’utilisais requirejs, et c’était la cause de ce problème.

Réponses:

1 pour la réponse № 1

L'erreur est que vous ne passez pas la fonction tabs à la méthode directive d'angular. Voir l'inadéquation des paramètres:

define(["angular","./controller","./tabs","./pane"],function(tabsController,tabs,pane){

Au lieu de faire:

define(["angular","./controller","./tabs","./pane"],function(angular, tabsController, tabs, pane){

0 pour la réponse № 2

Enfin, je viens de le recevoir, j'ai oublié d'ajouter angular comme paramètre dans module.js, donc chaque argument était au mauvais endroit.

define(["angular","./controller","./tabs","./pane"],function(angular,tabsController,tabs,pane){

var module = angular.module("tabsModule",[])
.controller("tabsController",["$scope",tabsController])
.directive("tabs",tabs)
//.directive("pane",pane);
return module;
});