2016-07-05 6 views
1

Auf Knopfdruck, ich bin ein tfoot an eine table anhängen. Der Inhalt der tfoot ist das Ergebnis einer .load zu einer lokalen .html-Datei. Obwohl meine Lösung funktioniert, führe ich bei jedem Klick einen Blick auf die .html-Datei. Kann das Ergebnis beim ersten Klick in einer Variablen gespeichert und wiederverwendet werden?Inhalt von .load HTML-Datei in Variable speichern

$scope.btnClick = function() { 

    var tfoot = $('#datepicker table').find('tfoot'); 
    if(!tfoot.length) { 
     tfoot = $('<tfoot>').appendTo('#datepicker table'); 
    } 

    tfoot.load('myDir/calendar/customFooter.html'); 

} 
+0

und als global var verwenden Sie? –

+0

Erstellen Sie einen Datenspeicher oder eine Variable oder sogar Stor im lokalen Speicher. Zu viele Optionen verfügbar. Leute benutzen sie sehr oft –

Antwort

2

Sie können dies erreichen, indem er einen Rückruf auf der load() Methode unter Verwendung das Ergebnis zu speichern. Ich verwende hierfür Ihre $scope Variable, aber Sie können diese bei Bedarf ändern. Versuchen Sie folgendes:

$scope.btnClick = function() {  
    var tfoot = $('#datepicker table').find('tfoot'); 
    if (!tfoot.length) { 
     tfoot = $('<tfoot>').appendTo('#datepicker table'); 
    } 

    if ($scope.tfootContent) { 
     tfoot.html($scope.tfootContent); 
    } else { 
     tfoot.load('myDir/calendar/customFooter.html', function(response) { 
      $scope.tfootContent = response; 
     }); 
    } 
} 
+0

'tfoot.html (scope.tfootContent)' => 'tfoot.html ($ scope.tfootContent);' - '$' verpasst – dinesh

+0

das hat perfekt funktioniert, danke! –

+0

Gut gefleckt @dinesh, danke. Antwort aktualisiert –

1

Sie die templateCache dafür verwenden können, (siehe Referenz hier ->https://docs.angularjs.org/api/ng/service/ $ templateCache) glaube ich, dass wäre ein besserer Ansatz sein. Auf diese Weise müssen Sie keine zusätzlichen Arbeiten ausführen und es wird zwischengespeichert. Sie würden die tfoot auf die Schaltfläche klicken zeigen, so dass es so etwas wie dieses würde:

$scope.btnClick = function() { tfootVisible = true;} 

und im html

<table id="datepicker"> 
    <tfoot ng-include="'templateId.html'" ng-if="tfootVisible"></tfoot> 
</table> 
+0

Danke, sieht interessant aus. Ich würde immer noch den Tfoot auf Klick injizieren müssen, da dies nicht Teil der Out-of-Box-Datepicker ist. Html –

+0

@Oam Versuchen Sie, alle HTML-Manipulation in HTML zu haben, und vermeiden jquery so viel wie möglich in den Controllern anhängen. Da Sie die Ansicht codieren, fügen Sie sie einfach ein und machen sie am Anfang mit ng-if nicht sichtbar. Wenn Sie diesen Datums-Picker nicht verwenden müssen, können Sie den Datepicker von hier aus überprüfen: https://angular-ui.github.io/bootstrap/ (datepicker popup) –