2016-12-10 3 views
0

У меня есть текущий проект, основанный на одностраничных приложениях (SPA), и я хотел бы внедрить функцию, которая динамически загружает директивы в мой html на основе того, какой вид SPA необходим.

Соответствующий код, который:

  1. часть моего контроллера, который должен загрузить директиву

    function checkSpaType(x) { 
    if (x === "quiz") { 
        const directivePosition = document.getElementById("spa"); 
        directivePosition.append($compile("<quizSPA></quizSPA>")($scope)); 
        }; 
    }; 
    
  2. сама директива

    function quizDirective() { 
    return { 
        templateUrl: "templates/quizSPA.html", 
        controller: 'quizCtrl', 
        link: function quizSPA() {} 
         } 
    } 
    

и конечно, это не волнует k, как планировалось. После запуска скриптов единственное, что загружается в моем HTML, - это сообщение «[object HTMLUnknownElement]]» iam очень уверен, что угловая просто не нахожу мою директиву, но как я могу ее видеть?

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

У кого-нибудь есть идея?

+0

Okay после некоторого копания я нашел по крайней мере часть проблемы. Мой сценарий определенно находит директиву. Я разделил свой код и сохранил компиляцию $ в переменной, зарегистрировал переменную и только затем добавил переменную в свой html. Пока только сообщение "[[object HTMLUnknownElement]]" загружается в мой html, выкапывая в журнал, есть фрукты. Журнал показывает, что зарегистрированная переменная, которая позже добавляется, содержит дочерние элементы, содержащие мою директиву. Таким образом, проблема должна заключаться в том, что либо компиляция isnt компилируется, как предполагается, либо добавляет не добавляя, как предполагалось. –

ответ

0

Я исправил его сам прямо сейчас.

бы изменить:

directivePosition.append($compile("<quiz-s-p-a></quiz-s-p-a>")($scope)) 

к:

const spaDirective = $compile("<quiz>")($scope); 
     directivePosition.append(spaDirective[0]);