2013-10-12 16 views
21

これはトピック外の問題のため書き直しです:angularjs:強制的にレンダリング/完全リフレッシュディレクティブテンプレート

私はドロップダウンのディレクティブを書いています。私はこのディレクティブをワークフローの種類として2回使用しています。最初のドロップダウンは、変更アクションによって、2番目のモデルのリフレッシュをトリガーします。モデルは正しく更新されますが、ビューには反映されません。ドロップダウンで項目を選択すると、2回目のドロップダウンで新しい項目の古い項目が表示されますが、角度モデルのconsole.log()は正しいです。

ビューには無限の再帰があります。テンプレートコードを示す私の最初のplunkrがこれです

:NG-含まセルフそれについて再帰を行いNG /テンプレートのIDとを使用すると、 http://plnkr.co/edit/jera17uCluGsFs8o5hRG?p=preview

ビューが完全に更新されない理由を私は理解していませんでした?

が更新されます。

種類について、 アレックス

+0

Plunker/jsFiddleスクリプトを提供できますか? –

+0

私はうまくいきませんでした...しかし、基本的なコードはそこにあります... – sp33c

+0

http://plnkr.co/edit/jera17uCluGsFs8o5hRG vissibleは2番目のドロップダウンであり、最初のドロップダウンの状態...そのモデルが変更されると、モデルは正しいが、かなり間違ってレンダリングされます。私はそれが無限のネスティングの問題だと思う。単純な角度コードとして機能します。 – sp33c

答えて

36

は、一般的に私は何をすべきか、使用のUI-IFディレクティブ基本的に私はまた、ディレクティブである要素の上に置くと何かを言うよのでangularuiチームによって作られたif文であります以下のような:

<div ui-if="mydata.prop" my-custom-directive></div> 

この方法myData.propの変更または私はそれを削除し、それが再び私のディレクティブをevalに原因バックDOMへの私のhtmlディレクティブをtranscludeなり、それを再適用し、その後簡単にnullに設定している場合。

+3

はng-ifに関して強制再レンダリング? – sp33c

+0

ディレクティブでng/templateを使用しているため、キャッシュの問題になる可能性がありますか? – sp33c

+1

ng-ifがこれと同じように動作するかどうかはわかりません。 Angularはdiff形式で実装している可能性があります。基本的にui-ifが動作するのは、domをシャドーするためにexilを実行してから、それを再コンパイルしてコンパイルするためです。 – btm1

関連する問題