2017-12-26 8 views
1

お願いします。 私はいくつかのJSコードを持っており、LEAFLETマップでの作業が可能です。 角。 AJAXリクエスト後の新規角度指示の開始

enter image description here

APP https://gist.github.com/russtanevich/140235d5456c3215df6ac8b788485ad0

たちは、マーカーをクリックするとマップの新しい広告に追加することができます - 私たちは広告についての情報を参照してください。 私たちはいくつかのカテゴリを選択することができます。また、フィルタとして広告テキストにいくつかの作品を含めることもできます。すべてのフィルタは、ajaxリクエストを介して動作します(51〜81行目)。さまざまなタイプのフィルタに対するさまざまなajaxリクエスト。 AJAXリクエスト後、$ scope.mapMarkersを変更します(13行目、54行目、61行目など)。 OK。 mapMarkersは、マーカーオブジェクトの配列(86行目)を含む変数です。オーケー。マーカーオブジェクトにはポップアップメッセージが表示されます(図のように)。このメッセージは角度のついたディレクティブです(96行目、5行目)。

最初のロードアプリケーションの後に表示されるマーカーには、ポップアップメッセージ(角度ディレクティブの開始)があります。 フィルタAJAXリクエストの後に取得するマーカーには、角度指示としてのポップアップメッセージもあります。しかし、論理的に - 彼らは表示されません。この場合、角度指令が出されないので、空のポップアップメッセージが表示されます。

enter image description here

は、私たちは私を理解し、期待しています。たぶん私は悪い方法を説明した。 私の間違いは何ですか?建築?それとも解決策はありますか?

ありがとうございました!良い一日を!宜しくお願いします!

+0

私はこの問題を理解しませんでした。あなたはあなたのポップアップが始まらないことを意味します。それが問題です。解決しようとしていることも具体的になりますか? – jstuartmilne

+1

問題の多くは、AngularJSのjQueryで混合しているという事実です。これをAngularで実装するかどうかを決定します。その場合は、jQueryを使用してDOMを操作しないでください。 – Hoyen

+0

@Sudakatuxはい。フィルタクエリを適用すると、var $ scope.mapMarkersは新しい配列を取得します。マーカーオブジェクトの属性 "メッセージ"は、角度指令です。新しいマーカ(フィルタリング後)には属性 "message"もあります(これもアンギュラディレクティブです)。新しいマーカーのポップアップは空です。 angleディレクティブは開始しないためです。はい。それは私の問題です。私は(ajaxを介して)フィルタリング後に空のポップアップメッセージを持っていません。私は解決策を見つけるために、どのように強制的にng-directivesを強制的にhtmlとjsの完全なコードの後に​​(次のajaxリクエストの後に) –

答えて

0

私は同様のアプリでモジュールリーフレットディレクティブを見ていますが、これは私がどのように処理したかです。私は、一部はあなたの方法は、テンプレートが角カントので動作しません書いただけというgeodataToMarkersで実行しようとしました何のようになりますタグのよう<script>で他の場所で開始イムtemplateUrlを使用して私の場合イムに指示

app.directive('theDirective', function($compile, $timeout){ 
    return { 
    restrict:'E', 
    templateUrl: 'template.html' 
    }; 
}); 

を作成しましたそのテンプレートを教えてください。

マーカーを追加すると、テンプレートをモデル内に埋め込む必要があります。つまり、それらをつなぎ合わせる必要があります。あなたは、メソッドへ$compileを注入することにより、 ことをやると一緒にモデルを使用してディレクティブを記入します

$compile(domElem)($scope); 

を両方のものを結びつけることができます。あなたはjQueryと角度の全体の多くを混合していて、多くのことを変更する必要があるため、あなたがdomHtmlにディレクティブない<the-directive></the-directive>

を意味するHTMLを渡す必要がありノートは、あなたのコードで説明するのは難しいの一種です。しかし、あなたはあなたが一緒にものを入れたいときのid =「yourmarker」でのdivを配置する必要があり、マーカー上で可能な迅速な解決

を明確にするには、ちょうどそのIDを持つ要素のため

var domElem = document.getElementById(markerPointerId); 
      domElem.innerHTML = '<the-directive></the-directive>'; 
を見ます

お客様の指令を挿入してください。それをコンパイルして

$compile(domElem)($scope); 

あなたが入れたスコープで表示されるはずです。 これは、角度の方法ではこれを意味します。私はちょうど私が仕事を知っている解決策を与えています。

私は助けてくれることを願っています。

関連する問題