2016-12-10 15 views
0

現在のプロジェクトはシングルページアプリケーション(SPA)をベースにしており、必要なSPAの種類に基づいてHTMLにディレクティブを動的にロードする関数を暗示したいと考えていました。

そのため、関連するコードは次のとおりです。

  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

オーケー、私は問題の少なくとも一部を発見したいくつかの掘削後

は変更しなければなりませんでした。 私のスクリプトは、指示文を見つけ出します。 私は自分のコードを分割し、$ compileを変数に保存し、変数をログに記録してから、その変数を自分のhtmlに追加しました。 "[[object HTMLUnknownElement]]"というメッセージだけがHTMLに読み込まれますが、ログには果物があります。 ログには、後で追加されるログに記録された変数にmyディレクティブを含む子ノードが含まれていることが示されています。 したがって、問題は、コンパイルが想定通りにコンパイルされていないか、仮定どおりに追加されないことです。 –

答えて

0

私は今すぐ自分で修正しました。

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

へ:

const spaDirective = $compile("<quiz>")($scope); 
     directivePosition.append(spaDirective[0]);  
関連する問題