2016-11-08 23 views
0

Da jede Teilvorlage zwischengespeichert wird, die ich don-t will ich tue diesenAngularJS außer Kraft setzen templateUrl Funktion

.directive('myMessages', [ function() { 
    return { 
     restrict : 'E', 
     templateUrl : 'wwwroot/base/messages/ui.partial.messages.show.html?v' + Date.now(), 

ist es möglich, global templateUrl Funktion außer Kraft setzen und Datum am Ende hinzufügen?

Ich versuche auch, diese zwei Lösungen aus dem Forum, aber sie sind nie ausgelöst:

$rootScope.$on('$routeChangeStart', function(event, next, current) { 
      $templateCache.remove(current.templateUrl); 
     }); 

     $rootScope.$on('$viewContentLoaded', function() { 
      $templateCache.removeAll(); 
     }); 
+0

Mögliche Duplikat [Disable caching in AngularJS mit ui-Router] (http://stackoverflow.com/questions/23589843/disable-template-caching-in-angularjs-with-ui-router) –

+0

Wo setzt du diesen Code hin? Ich mache mehr oder weniger die gleiche Sache in meiner app.run-Funktion und es funktioniert gut, jedes Mal, wenn eine Ansicht geladen wird, läuft es. –

Antwort

1

Wenn ich mich nicht falsch, Sie versuchen, Ihre Richtlinie als Banner oben auf jeder Seite zu verwenden.

Es wäre das Beste, wenn Sie Ihr Backend dazu bringen könnten, Ihnen einen JSON anstelle von partiellem HTML zurückzugeben, aber ich verstehe, dass das nicht immer passieren wird.

Anstatt templateUrl zu verwenden, würde ich vorschlagen, $http.get zu verwenden und es in die Direktive zu laden.

.directive('myMessages', [ function() { 
    return { 
     restrict : 'E', 
     template : '<div></div>', 
     link: function(scope, element, attrs){ 
      $http.get('wwwroot/base/messages/ui.partial.messages.show.html?v' + Date.now()).then(function(response.data) { 
       // if your html contains angular syntax, use $compile 
       element.html(response.data); 
       $compile(element.contents())(scope); 

       // if your html doesn't contain angular syntax, use $sce 
       // your template needs to be <div ng-bind-html="message"></div> 
       scope.message = $sce.trustAsHtml(response.data); 
      }); 
     } 
    } 
]); 
Verwandte Themen