2016-12-28 7 views
3

から特定のテンプレートを削除し、私は角度:キャッシュ

$templateCache.removeAll(); 

によってキャッシュからすべてのテンプレートを削除する方法を知っている。しかし、私は唯一のキャッシュから特定のテンプレートを削除したいです。 テンプレートが$routeProviderからロードされていませんが、それはこの

-web 
    - js 
    - controllers 
     - appController.js 
    - templates 
    - page 
     - file.html 

は私がappController.js

+0

あなたは$ templateCache.remove( 'template/file.html')のようなことをやろうとしましたか?私はそれが共通のキャッシュシステムだと思って、そのパスと名前をキーとしてビューの名前を使用します –

+0

はい私はそれを試みましたが、私のために働いていません –

+0

'remove(key)'はうまくいくはずです。 – tasseKATT

答えて

1

$templateCache$cacheFactoryに基づいており、後者には.remove(key)があるため、$ templateCacheでも同様に動作します。おそらくあなたは間違った鍵を持っていますか?

.get(key)に電話して、正しいキーを持っているかどうかを確認することができます(そうでないと思われます - それが理由で.remove(key)があなたのために機能しません)。

おそらく、テンプレートファイルへのパスがキーを台無しにしている可能性があります。相対パスは実際のキーではなく、完全なパスまたはファイル名だけかもしれません。

+0

質問を編集しました。キーにどのようなパスを与えるのか教えていただけますか? –

0

の試みを$templateCache.remove('/templates/page/file.html');を行ったように私のアプリの構造がある

templateUrl: 'template/page/file.html' 

を使用してディレクティブからレンダリングされていますアプリの実行方法でこれを行う:

app.run([ 
     "$rootScope", "$templateCache", "authService", function($rootScope, $templateCache, authService) { 
      $rootScope.$on("$routeChangeStart", function(event, next, current) { 

        if (typeof (current) !== "undefined") { 
         $templateCache.remove(current.templateUrl); 
        } 


      }); 
     } 
    ]); 
+0

$ routeChangeは発生していません。私はその質問に言及した。ディレクティブからロードされています。 –

0

問題は私のコードでは、関数のトリガが正しくありませんでした。私はそれを解決しました

$rootScope.$on('$viewContentLoaded', function() { 
    $templateCache.remove('templates/page/file.html'); 
}); 

これで、ページが読み込まれるときにテンプレートがキャッシュから削除されます。 ありがとうございました。