So aktualisieren Sie die Seite nach dem Aufruf von $ http.put service in Directive mit AngularJS / Web API / Angular-UI-Router

8

Wir sind neu in AngularJS, arbeiten aber an einer AngularJS / Web API-Anwendung, die ein Datenmodell von einem AngularJS Bootstrap-Popover / Richtlinie.

Wir haben die Datenbank erfolgreich aus der Anweisung / dem Popover aktualisiert, haben jedoch Probleme herauszufinden, wie die Daten auf der Seite mit den aktualisierten Daten aktualisiert werden können, ohne die Seite neu zu laden.

Hauptseite CSHTML:

%Vor%

Popover HTML:

%Vor%

Die Hauptseite erhält zunächst Daten von einem Service im Winkelregler:

%Vor%

Holen Sie sich den Datendienst:

%Vor%

Der Update Service wird aus der Popover-Richtlinie aufgerufen.

Aktualisierungsdienst:

%Vor%

Hier ist ein Auszug aus unserer Popover-Direktive, wo die Aktualisierung stattfindet und wo wir dachten, wir könnten den Bereich und die Daten für die Seite aktualisieren:

%Vor%

Wir haben versucht, $ state.reload (); in der Popover-Direktive direkt nach updateService.putData (data), jedoch verursachte dies - & gt; Fehler: Kann nicht in den abstrakten Status "[Objekt-Objekt]" -Fehler übergehen.

Hier ist die vollständige Popover-Richtlinie:

%Vor%

AKTUALISIERT: 8. MAI-2017 Ursprünglich gibt es einen zusätzlichen Datendienst und eine Direktive, die wir aus diesem Post herausgelassen haben, da es als nicht essentielle Information betrachtet werden kann, die jedoch kürzlich hinzugefügt wurde, da sie möglicherweise benötigt wird.

SVG Lastrichtlinie:

%Vor%

Stellenangebot (vor dem Update prüfen):

%Vor%

Die Hauptfrage ist:

Wie kann unsere Anwendung unsere Seite mit den aktualisierten Daten aktualisieren, ohne die Seite erneut zu laden?

Früher waren wir in der Lage, dies in UpdatePanels in ASP.Net Webforms zu tun. Ich denke, sie waren teilweise Postbacks / AJAX Anrufe ..

EDITED 2.-AUG-2017

+++++++++++++++++++++++++++++++++++++++++

Obwohl das Kopfgeld automatisch vergeben wurde, haben wir immer noch keine Antwort auf diese Frage. Ohne einen Implementierungskontext sind die gegebenen Antworten nicht nützlich.

Kann jemand die gegebenen Antworten erweitern, um uns eine Vorstellung davon zu geben, wie dieses Problem gelöst werden kann?

Danke

    
jazzBox 18.04.2017, 20:12
quelle

3 Antworten

3
___ antwort43890755 ___

Fügen Sie einfach Ihre Daten zu $scope object hinzu und verwenden Sie sie in Ihrer Ansicht, wenn Sie die Daten nur aktualisieren oder ändern zB: bedenken Sie, dass Sie eine Funktion haben, um die Daten zu erhalten, bei denen Sie einen Rest-Aufruf an Ihre Datenbank machen.

%Vor%

Immer wenn Sie Ihre Daten ändern, rufen Sie einfach diese Funktion in Ihrem Fall beim Klicken auf Schließen von directive / popup

auf     
___ qstntxt ___

Wir sind neu in AngularJS, arbeiten aber an einer AngularJS / Web API-Anwendung, die ein Datenmodell von einem AngularJS Bootstrap-Popover / Richtlinie.

Wir haben die Datenbank erfolgreich aus der Anweisung / dem Popover aktualisiert, haben jedoch Probleme herauszufinden, wie die Daten auf der Seite mit den aktualisierten Daten aktualisiert werden können, ohne die Seite neu zu laden.

Hauptseite CSHTML:

%Vor%

Popover HTML:

%Vor%

Die Hauptseite erhält zunächst Daten von einem Service im Winkelregler:

%Vor%

Holen Sie sich den Datendienst:

%Vor%

Der Update Service wird aus der Popover-Richtlinie aufgerufen.

Aktualisierungsdienst:

%Vor%

Hier ist ein Auszug aus unserer Popover-Direktive, wo die Aktualisierung stattfindet und wo wir dachten, wir könnten den Bereich und die Daten für die Seite aktualisieren:

%Vor%

Wir haben versucht, $ state.reload (); in der Popover-Direktive direkt nach updateService.putData (data), jedoch verursachte dies - & gt; Fehler: Kann nicht in den abstrakten Status "[Objekt-Objekt]" -Fehler übergehen.

Hier ist die vollständige Popover-Richtlinie:

%Vor%

AKTUALISIERT: 8. MAI-2017 Ursprünglich gibt es einen zusätzlichen Datendienst und eine Direktive, die wir aus diesem Post herausgelassen haben, da es als nicht essentielle Information betrachtet werden kann, die jedoch kürzlich hinzugefügt wurde, da sie möglicherweise benötigt wird.

SVG Lastrichtlinie:

%Vor%

Stellenangebot (vor dem Update prüfen):

%Vor%

Die Hauptfrage ist:

Wie kann unsere Anwendung unsere Seite mit den aktualisierten Daten aktualisieren, ohne die Seite erneut zu laden?

Früher waren wir in der Lage, dies in UpdatePanels in ASP.Net Webforms zu tun. Ich denke, sie waren teilweise Postbacks / AJAX Anrufe ..

EDITED 2.-AUG-2017

+++++++++++++++++++++++++++++++++++++++++

Obwohl das Kopfgeld automatisch vergeben wurde, haben wir immer noch keine Antwort auf diese Frage. Ohne einen Implementierungskontext sind die gegebenen Antworten nicht nützlich.

Kann jemand die gegebenen Antworten erweitern, um uns eine Vorstellung davon zu geben, wie dieses Problem gelöst werden kann?

Danke

    
___ tag123angularjs ___ Für Fragen zu AngularJS (1.x), dem Open-Source-JavaScript-Framework. Verwenden Sie dieses Tag NICHT für Angular 2 oder höhere Versionen. Verwenden Sie stattdessen das [eckige] -Tag. ___ antwort43841043 ___

Bitte versuchen Sie die folgenden Schritte:

1. Erstellen Sie eine Methode in %code% directive und rufen Sie sie auf, indem Sie die Daten

übergeben

Fügen Sie in Ihrer %code% -Direktive %code% item in den Bereich ein Erklärung:

%Vor%

und wo Sie versuchen, den Status neu zu laden, anstatt den Status oder die Seite neu zu laden, rufen Sie den folgenden Code auf. Hiermit wird ein Ereignissystem erstellt, das innerhalb der Direktive ausgelöst wird, damit der Controller oder die Elternrichtlinie wissen, dass sich Daten geändert haben und die Ansicht nun aktualisiert werden kann.

%Vor%

2. Erstellen Sie eine Methode in %code% , um die übergebenen Daten zu akzeptieren

Da Sie den geschachtelten Direktivenansatz verwenden, müssen Sie den folgenden Code in %code% directive verwenden.

%Vor%

%code% entspricht %code% Element auf %code% 's Umfang.

Deklarieren Sie die %code% -Methode für den Bereich von %code% directive.

%Vor%

Die Objekteigenschaften, die Sie innerhalb der Direktive übergeben, sind flach auf die Anzahl der Parameter verteilt.

Wenn Sie diese Daten weiter an Ihren Controller weitergeben müssen, wo %code% deklariert ist. Wiederholen Sie die obigen beiden Schritte für %code% directive.

Ich hoffe, dieser Ansatz ist klar. Es ist nicht anders als in den Angular-Richtlinien , Abschnitt Erstellen einer Richtlinie, die andere Elemente umschließt und Code, wo eine Schließen-Schaltfläche hinzugefügt wird. Hier ist der direkte Link zum Code in Plunkr .

Nur eine Frage: Werden Sie diese Anweisungen getrennt voneinander verwenden? Wenn nicht, können Sie versuchen, eine Direktive zu erstellen, anstatt sie zu zweien zu machen. Dies reduziert die Komplexität.

    
___ tag123aspnetwebapi ___ Die ASP.NET-Web-API ist ein Framework zum Erstellen von HTTP-Diensten für Clients wie Browser und mobile Geräte. Es basiert auf dem Microsoft .NET Framework und ist ideal für den Aufbau von RESTful-Diensten. ___ tag123angularjsdirective ___ AngularJS-Direktiven sind eine Möglichkeit HTML neue Tricks beizubringen, indem das HTML-Vokabular erweitert wird. Mit Direktiven können Sie DOM-Elemente in einem deklarativen Muster verwalten, wodurch Sie von DOM-Manipulationsaufgaben auf niedriger Ebene befreit werden. ___ qstnhdr ___ So aktualisieren Sie die Seite nach dem Aufruf von $ http.put service in Directive mit AngularJS / Web API / Angular-UI-Router ___ answer43481991 ___

Um Ihre Ansicht zu aktualisieren (die empfangenen Daten nicht zu binden), verwenden Sie die Antworten für die folgenden Fragen:

Verwenden von ngRoute-Modul So laden Sie die gesamte Seite neu oder rendern sie mit AngularJS

Verwenden des ui-Router-Moduls Aktuellen Status erneut laden - Daten aktualisieren

Damit würde ich Ihnen empfehlen, die empfangenen Daten Ihrer beschränkten $ scope -Eigenschaft zuzuordnen.

Ich füge ein vollständiges Beispiel hinzu, nachdem du ein aktualisiertes PLNKR zur Verfügung gestellt hast:)

    
___ tag123angularbootstrap ___ Bootstrap Helfer Modul für AngularJs Framework ___ tag123angularjsscope ___ In AngularJS ist ein Bereich ein Objekt, das auf das Anwendungsmodell verweist. Es ist ein Ausführungskontext für Ausdrücke. ___
rakesh 10.05.2017 11:09
quelle
1

Um Ihre Ansicht zu aktualisieren (die empfangenen Daten nicht zu binden), verwenden Sie die Antworten für die folgenden Fragen:

Verwenden von ngRoute-Modul So laden Sie die gesamte Seite neu oder rendern sie mit AngularJS

Verwenden des ui-Router-Moduls Aktuellen Status erneut laden - Daten aktualisieren

Damit würde ich Ihnen empfehlen, die empfangenen Daten Ihrer beschränkten $ scope -Eigenschaft zuzuordnen.

Ich füge ein vollständiges Beispiel hinzu, nachdem du ein aktualisiertes PLNKR zur Verfügung gestellt hast:)

    
OB FullStack Kenobi 18.04.2017 20:53
quelle
1
___ antwort43890755 ___

Fügen Sie einfach Ihre Daten zu svgFloorplanPopover object hinzu und verwenden Sie sie in Ihrer Ansicht, wenn Sie die Daten nur aktualisieren oder ändern zB: bedenken Sie, dass Sie eine Funktion haben, um die Daten zu erhalten, bei denen Sie einen Rest-Aufruf an Ihre Datenbank machen.

%Vor%

Immer wenn Sie Ihre Daten ändern, rufen Sie einfach diese Funktion in Ihrem Fall beim Klicken auf Schließen von directive / popup

auf     
___ qstntxt ___

Wir sind neu in AngularJS, arbeiten aber an einer AngularJS / Web API-Anwendung, die ein Datenmodell von einem AngularJS Bootstrap-Popover / Richtlinie.

Wir haben die Datenbank erfolgreich aus der Anweisung / dem Popover aktualisiert, haben jedoch Probleme herauszufinden, wie die Daten auf der Seite mit den aktualisierten Daten aktualisiert werden können, ohne die Seite neu zu laden.

Hauptseite CSHTML:

%Vor%

Popover HTML:

%Vor%

Die Hauptseite erhält zunächst Daten von einem Service im Winkelregler:

%Vor%

Holen Sie sich den Datendienst:

%Vor%

Der Update Service wird aus der Popover-Richtlinie aufgerufen.

Aktualisierungsdienst:

%Vor%

Hier ist ein Auszug aus unserer Popover-Direktive, wo die Aktualisierung stattfindet und wo wir dachten, wir könnten den Bereich und die Daten für die Seite aktualisieren:

%Vor%

Wir haben versucht, $ state.reload (); in der Popover-Direktive direkt nach updateService.putData (data), jedoch verursachte dies - & gt; Fehler: Kann nicht in den abstrakten Status "[Objekt-Objekt]" -Fehler übergehen.

Hier ist die vollständige Popover-Richtlinie:

%Vor%

AKTUALISIERT: 8. MAI-2017 Ursprünglich gibt es einen zusätzlichen Datendienst und eine Direktive, die wir aus diesem Post herausgelassen haben, da es als nicht essentielle Information betrachtet werden kann, die jedoch kürzlich hinzugefügt wurde, da sie möglicherweise benötigt wird.

SVG Lastrichtlinie:

%Vor%

Stellenangebot (vor dem Update prüfen):

%Vor%

Die Hauptfrage ist:

Wie kann unsere Anwendung unsere Seite mit den aktualisierten Daten aktualisieren, ohne die Seite erneut zu laden?

Früher waren wir in der Lage, dies in UpdatePanels in ASP.Net Webforms zu tun. Ich denke, sie waren teilweise Postbacks / AJAX Anrufe ..

EDITED 2.-AUG-2017

+++++++++++++++++++++++++++++++++++++++++

Obwohl das Kopfgeld automatisch vergeben wurde, haben wir immer noch keine Antwort auf diese Frage. Ohne einen Implementierungskontext sind die gegebenen Antworten nicht nützlich.

Kann jemand die gegebenen Antworten erweitern, um uns eine Vorstellung davon zu geben, wie dieses Problem gelöst werden kann?

Danke

    
___ tag123angularjs ___ Für Fragen zu AngularJS (1.x), dem Open-Source-JavaScript-Framework. Verwenden Sie dieses Tag NICHT für Angular 2 oder höhere Versionen. Verwenden Sie stattdessen das [eckige] -Tag. ___ antwort43841043 ___

Bitte versuchen Sie die folgenden Schritte:

1. Erstellen Sie eine Methode in svgFloorplanPopover directive und rufen Sie sie auf, indem Sie die Daten

übergeben

Fügen Sie in Ihrer onDataUpdate -Direktive svgFloorplan item in den Bereich ein Erklärung:

%Vor%

und wo Sie versuchen, den Status neu zu laden, anstatt den Status oder die Seite neu zu laden, rufen Sie den folgenden Code auf. Hiermit wird ein Ereignissystem erstellt, das innerhalb der Direktive ausgelöst wird, damit der Controller oder die Elternrichtlinie wissen, dass sich Daten geändert haben und die Ansicht nun aktualisiert werden kann.

%Vor%

2. Erstellen Sie eine Methode in svgFloorplan , um die übergebenen Daten zu akzeptieren

Da Sie den geschachtelten Direktivenansatz verwenden, müssen Sie den folgenden Code in on-data-update directive verwenden.

%Vor%

onDataUpdate entspricht svgFloorplanPopover Element auf onDataUpdateInController 's Umfang.

Deklarieren Sie die svgFloorplan -Methode für den Bereich von svgFloorplan directive.

%Vor%

Die Objekteigenschaften, die Sie innerhalb der Direktive übergeben, sind flach auf die Anzahl der Parameter verteilt.

Wenn Sie diese Daten weiter an Ihren Controller weitergeben müssen, wo svgFloorplan deklariert ist. Wiederholen Sie die obigen beiden Schritte für %code% directive.

Ich hoffe, dieser Ansatz ist klar. Es ist nicht anders als in den Angular-Richtlinien , Abschnitt Erstellen einer Richtlinie, die andere Elemente umschließt und Code, wo eine Schließen-Schaltfläche hinzugefügt wird. Hier ist der direkte Link zum Code in Plunkr .

Nur eine Frage: Werden Sie diese Anweisungen getrennt voneinander verwenden? Wenn nicht, können Sie versuchen, eine Direktive zu erstellen, anstatt sie zu zweien zu machen. Dies reduziert die Komplexität.

    
___ tag123aspnetwebapi ___ Die ASP.NET-Web-API ist ein Framework zum Erstellen von HTTP-Diensten für Clients wie Browser und mobile Geräte. Es basiert auf dem Microsoft .NET Framework und ist ideal für den Aufbau von RESTful-Diensten. ___ tag123angularjsdirective ___ AngularJS-Direktiven sind eine Möglichkeit HTML neue Tricks beizubringen, indem das HTML-Vokabular erweitert wird. Mit Direktiven können Sie DOM-Elemente in einem deklarativen Muster verwalten, wodurch Sie von DOM-Manipulationsaufgaben auf niedriger Ebene befreit werden. ___ qstnhdr ___ So aktualisieren Sie die Seite nach dem Aufruf von $ http.put service in Directive mit AngularJS / Web API / Angular-UI-Router ___ answer43481991 ___

Um Ihre Ansicht zu aktualisieren (die empfangenen Daten nicht zu binden), verwenden Sie die Antworten für die folgenden Fragen:

Verwenden von ngRoute-Modul So laden Sie die gesamte Seite neu oder rendern sie mit AngularJS

Verwenden des ui-Router-Moduls Aktuellen Status erneut laden - Daten aktualisieren

Damit würde ich Ihnen empfehlen, die empfangenen Daten Ihrer beschränkten $ scope -Eigenschaft zuzuordnen.

Ich füge ein vollständiges Beispiel hinzu, nachdem du ein aktualisiertes PLNKR zur Verfügung gestellt hast:)

    
___ tag123angularbootstrap ___ Bootstrap Helfer Modul für AngularJs Framework ___ tag123angularjsscope ___ In AngularJS ist ein Bereich ein Objekt, das auf das Anwendungsmodell verweist. Es ist ein Ausführungskontext für Ausdrücke. ___
Ritesh Jagga 08.05.2017 06:24
quelle