2015-09-10 5 views
1

Я хочу вывести пользовательские директивы из пользовательской директивы в ng-repeat для перетаскивания & целей для удаления. моя проблема в том, что myWidget корректно выводит html-тег, но настраиваемая директива не выполняется.angularjs repeat custom директива

похож на этот пост: ng-repeat in combination with custom directive

основной шаблон директивы:

<div class="col-lg-5 hidden-md main-column" style="height:inherit;" 
     ng-model='list2' 
     data-drop="true" 
     data-jqyoui-options="{accept:'div:not([ng-model=list2])'}" 
     jqyoui-droppable="{multiple:true}"> 

     <div ng-repeat="item in list2" 
      ng-model="list2" 
      data-drag="{{item.drag}}" 
      data-jqyoui-options="{revert: 'invalid'}" 
      jqyoui-draggable="{index: {{$index}},animate:true}"> 
       <div my-widget="item.widget"></div> 
     </div> 

директива для динамического вызова:

(function(){ 
"use strict"; 

angular 
    .module('achilles') 
    .directive('myWidget', function() { 
     return { 
      scope: { 
       w: '=myWidget' 
      }, 
      restrict: 'EA', 
      priority: 300, 
      link: function(scope, element, attrs) { 
       element.replaceWith('<' + scope.w + '>'); 
      } 
     }; 
    });})(); 

инспектор показывает, что выход, но директива не срабатывает.

(function(){ 
"use strict"; 

angular 
    .module('achilles') 
    .directive('anamnesisWidget', anamnesisWidget); 

Есть ли какой-то приоритет или проблема с масштабом, что приводит к тому, что директива 3. не запускается?

+0

выход: <анамнез-виджет> user2436745

ответ

1

Этот элемент директивы необходимо использовать, используя $compile, перед тем, как его заменить, чтобы вызывающая директива вызывала ее, и она будет отображать ее.

Код

link: function(scope, element, attrs) { 
    element.replaceWith($compile('<' + scope.w + '/>')(scope)); 
} 
+0

я должен был впрыснуть $ скомпилировать, а затем он работал. зачем мне (область) после компиляции? – user2436745

+0

@ user2436745 Я не упомянул компиляцию '$ compile' в вашем коде. Обычно в Angular do инъекционные сервисы перед их использованием ..' $ scope' говорит угловым, что преобразование (компиляция) 'element' в угловом контекст, который будет иметь эту «область», доступную на нем. –

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