2013-11-11 5 views
4

Я использую AngularJs с системой шаблонов. Я хочу, чтобы добавить конкретные встроенный Javascript скрипт для каждого шаблона добавления Уведомления приветов окна к выбранной вкладке (Главный | Список | Настройка)Почему ng-scope добавлен в javascript встроенный мой частичный вид и делает предупреждение неработоспособным?

Html оказывает: но нг-сфера добавляется и ничего оповещения при смене вкладки.

<script type="text/javascript" class="ng-scope">alert("home")</script> 

Я делаю пример можно посмотреть здесь:

http://bit.ly/HWcN1H

или здесь

plunkr example с боевой готовности ("template1"), присутствующее в template1.html, но оказывает, как

<script type="text/javascript" class="ng-scope">alert("template1")</script> 
+0

Это паразитный закрытие/скрипт должен быть там? –

+0

Добавление класса в тег скрипта или любой другой тег не остановит запуск скрипта .... есть ли какой-либо текст внутри тега скрипта? Не удивлюсь, если его убьют, чтобы избежать написания скриптов. jQuery делает то же самое с методом 'html()', удаляет все scriot перед вставкой DOM – charlietfl

+0

У меня может быть такая же проблема, так как мое обновление до углового 1.2, мой код javascript больше не загружается с помощью шаблона partials. –

ответ

11

я улучшил решение Endorama по адресу github

Тот же самый процесс.

  1. Создание угловых loadscript.js (из приведенной выше ссылке)
  2. в вашем использовании приложение «ngLoadScript» в качестве зависимости ресурсов.

    var app = angular.module ('YOUR_APP_NAME', ['ngResource', 'ngRoute', ..., 'ngLoadScript']);

  3. В вашем частичном использовании «text/javascript-lazy» в качестве типа MIME.

Все должно работать в соответствии с требованиями:

/*global angular */ 
(function (ng) { 
    'use strict'; 

    var app = ng.module('ngLoadScript', []); 

    app.directive('script', function() { 
    return { 
     restrict: 'E', 
     scope: false, 
     link: function(scope, elem, attr) 
     { 
     if (attr.type==='text/javascript-lazy') 
     { 
      var s = document.createElement("script"); 
      s.type = "text/javascript";     
      var src = elem.attr('src'); 
      if(src!==undefined) 
      { 
       s.src = src; 
      } 
      else 
      { 
       var code = elem.text(); 
       s.text = code; 
      } 
      document.head.appendChild(s); 
      elem.remove(); 
      /*var f = new Function(code); 
      f();*/ 
     } 
     } 
    }; 
    }); 

}(angular)); 
+0

Я поместил несколько javascript-лазей в том же файле, и порядок загрузки не jive = ( – Maslow

+2

улучшено? Скопировано-вы вставлено вы имеете в виду – caub

+0

Как сделать это синхронным звонком? – Vermus

0

Существует решение, кодирующее директиву:

https://gist.github.com/endorama/7369006

var app = ng.module('ngLoadScript', []); 

    app.directive('script', function() { 
    return { 
     restrict: 'E', 
     scope: false, 
     link: function(scope, elem, attr) { 
     if (attr.type=='text/javascript-lazy') { 
      var code = elem.text(); 
      var f = new Function(code); 
      f(); 
     } 
     } 
    }; 
    }); 

использование в частичном:

<script type="text/javascript-lazy" > 
alert("lazy loaded"); 
    </script> 
+0

Есть ли способ сделать это, но использовать атрибут «src» в теге скрипта? – Mastro

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

  • Нет связанных вопросов^_^