2015-06-26 4 views
3

Я написал очень простой угловой модуль, который позволяет вкладками-навигации (код упрощена, но не работает, либо):

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; 
}); 

и я включить модуль в другой:

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

Но когда я использую его, я получил эту ошибку:

Error: [$injector:unpr] Unknown provider: $scopeProvider <- $scope <- tabsDirective

Я понятия не имею, где он приходит, я ve сделал несколько модулей/директив, и я думаю, что сделал это, как всегда.

Я застрял на нем в течение нескольких часов, , пожалуйста, помогите !!!!

Редактировать: Я не указал его, но я использовал requirejs, и это стало причиной этой проблемы.

+0

вы можете предоставить бухнуться ссылку >>? –

+0

Это работает для меня http://plnkr.co/edit/MWyO99jZeryqmH7viTwO?p=preview – sbedulin

+0

проклятье! Я собираюсь изучить немного больше и отредактировать свой вопрос ... – n00dl3

ответ

1

Ошибка в том, что вы не передаете функцию табуляции в директивный метод углового. См рассогласование параметров:

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

Вместо делать:

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

Похоже, мы не знаем, что в то же время – Raulucco

+1

да, но я дам вам всю славу :-) – n00dl3

+0

Ну, спасибо ;-) – Raulucco

0

Наконец-то я получил его, я забыл добавить angular в качестве параметра в module.js, поэтому каждый аргумент был не в том месте.

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; 
});