2015-05-09 3 views
0

У меня есть plunker здесь - http://plnkr.co/edit/ezKOtG9KJ6nD0068jpry?p=previewУгловая ReferenceError: Контроллер не определен

Я после этой простой угловой учебник здесь - https://www.youtube.com/watch?v=aG8VD0KvUw4

Когда я запускать код на ПОЛУЧИТЬ ReferenceError: Контроллер не определен

Может кто-нибудь объяснить это или кто его исправить.

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

     app.controller('ShieldCtrl', function($scope){ 

      $scope.sheildNames = []; 

      this.addReigns = function(){ 

       $scope.shieldNames.push('Reigns: One'); 

      }; 

      this.addCollins = function(){ 

       $scope.shieldNames.push('Collins: Two'); 

      }; 

      this.addAmbrose = function(){ 

       $scope.shieldNames.push('Ambrose: Three'); 

      }; 

     }) 


     .directive('theshield', function(){ 

      return{ 
       restrict: 'E', 
       scope: {}, 
       controller: 'ShieldCtrl', 
       link: function(scope, element, attrs){ 

        element.bind('mouseenter', function(){ 

         console.log(scope.sheildName); 

        }) 
       } 
      } 
     }) 


     .directive('reigns', function(){ 
      return{ 
       require: 'theshield', 
       link: function(scope, element, attrs, ShielCtrl){ 
        ShieldCtrl.addReigns(); 
       } 
      } 
     }) 

     .directive('collins', function(){ 
      return{ 
       require: 'theshield', 
       link: function(scope, element, attrs, ShielCtrl){ 
        ShieldCtrl.addCollins(); 
       } 
      } 
     }) 

     .directive('ambrose', function(){ 
      return{ 
       require: 'theshield', 
       link: function(scope, element, attrs, ShielCtrl){ 
        ShieldCtrl.addAmbrose(); 
       } 
      } 
     }) 
+1

ваш код имеет несколько проблем, вызывающих неправильное функционирование; ошибка, о которой вы спрашиваете в этом вопросе, связана с простой опечаткой: 'link: function (scope, element, attrs, ShielCtrl) {'. вам не хватает 'd' во всех трех функциях. Однако, если вы это исправите, у вас возникнут другие проблемы, которые помогут вам решить вашу логику. – Claies

+0

Я думаю, что контроллер в порядке, но для директивы вы, возможно, должны добавить app.directive по каждой директиве. – carton

ответ

1

У вас простая ошибка правописания, ваши директивные зависимости зависят от ShielCtrl, и вы пытаетесь использовать ShieldCtrl.

.directive('reigns', function(){ 
     return{ 
      require: 'theshield', 
      link: function(scope, element, attrs, ShielCtrl){ 
       ShieldCtrl.addReigns(); <-- CHECK spelling. 
      } 
     } 
    }) 

Ваша следующая ошибка - еще одна орфографическая ошибка: $ scope. sheildNames = []; и вы пытаетесь получить доступ к правильной орфографии: $ scope. shieldNames .push ('Reigns: One');

Смежные вопросы