2015-04-19 2 views
1

Это потенциально проблема с угловым выражением, но я подозреваю, что она больше связана с общим JS. Я настраиваю приложение «Угловое», и пока все работает хорошо.JS-скрипт не работает, если он завернут в IIFE (угловой)

Я сломал его в различные модули app, app.core, app.components и т.д.

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

'use strict'; 
    angular.module('app.components') 
    .directive('navBar', function() { 
     return { 
      controller: 'Main', 
      controllerAs: 'vm', 
      link: function(){ 
       console.log('Directive link') 
      }, 
      template: 'Directive template' 
     }; 
    }); 

Однако, когда я оберните его в IIFE:

(function() { 
     'use strict'; 
     angular.module('app.components') 
     .directive('navBar', function() { 
      return { 
       link: function(){ 
        console.log('Directive link') 
       }, 
       template: 'Directive template' 
      }; 
     }); 
    }); 

Он выходит из строя, причудливо. Все мои другие модули написаны так же, как и второй пример, и отлично работают.

Любое руководство высоко ценится.

Спасибо,

Dave

+2

Этот фрагмент кода никогда фактически вызывается. Чего вы ожидаете? Вы имели в виду IIFE (http://en.wikipedia.org/wiki/Immediately-invoked_function_expression)? –

+1

Просто вызовите функцию: (function() {...})(); – pixelbits

+0

Сообщение обновлено до IIFE. Спасибо :-) – iamdash

ответ

2

Затворы должны вызываться для их кода для запуска:

(function() {...}());

или

(function() {...})();

+0

Ах! Огромное спасибо. Я только что скопировал/вставил первую строчку, пока неправильно писал последнюю строку. – iamdash

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