2016-03-21 3 views

Antwort

2

Version 1.1.0 und höher (von 5/11/16)

Mit der Version 1.1.0 und höher, Sie haben $recompute() Methode zu verwenden, das das gleiche Material wie alt tun (siehe unten) $serverRefresh() Methode.

Die Dokumentation finden Sie unter Angular-Wakanda Entity API Reference.

Version < 1.1.0

Auf der aktuellen Version (1.0.4) von Angular-Wakanda, Sie noch können das tun, indem $serverRefresh() auf Ihrem Unternehmen anrufen.

var entity = ds.Product.$create(); 
entity.$serverRefresh().$promise.then(function() { 
    //Your entity is updated with calculated attributes filled, and right events executed 
}); 

Was $serverRefresh() tut, ist die folgende:

  • Auf einem neu Attribut erstellt (noch nicht gespeichert), wird es auslösen init dann clientrefresh Ereignisse serverseitige, aktualisieren Sie dann die clientseitige Einheit
  • Auf einer bereits gespeicherten Einheit, wird es clientrefresh Ereignis serverseitige auslösen, dann aktualisieren clientseitige Einheit

Tatsächlich ist es veraltet und wird entfernt. Aber es wird in Version 1.1.0 durch eine andere, gut dokumentierte und eindeutige Methode ersetzt, die dasselbe Verhalten hat.

+0

Danke. Ich werde das testen und Feedback geben. Das klingt gut. Ist das Repo für die neue Version privat? – Ganbin

+0

@Gankin Ja, es ist privat für jetzt, es wird bald veröffentlicht werden. – Blackus

0

Sie sollten $fetch() Methode für Ihre Entität verwenden, es wird es abrufen und alle seine Attribute aktualisieren, wenden Sie dann Ihre Änderungen an und rufen Sie $ save() auf.

Siehe auch: angular-wakanda doc

+0

Die $ fetch-Methode löst das init-Ereignis nicht aus. – Ganbin

+0

Das Init-Ereignis wird ausgelöst, unmittelbar nachdem eine neue Entität im Arbeitsspeicher auf dem Server erstellt wurde. können Sie dieses Ereignis verwenden, um Attributwerte zu initialisieren, ein Init-Ereignis des "nachName" Attribut zu verknüpfen: model.Employee.lastName.events.init = function (event) { this.lastName = "„; } Wenn Sie eine neue Entität mit $ create erstellen, wird das init-Ereignis ausgelöst. –

+0

Danke Ich weiß das alles. Ich kann einfach nicht erreichen, dass dieses Init-Ereignis mit dem Winkelstecker ausgelöst wird. Ich benutze Wakanda, bevor die V1 existiert (2012). Ich bin mir des Wakanda-Workflows voll bewusst. Die $ fetch-Methode kann nicht auf eine neue Entität angewendet werden, die noch nicht erstellt und in der Datenbank gespeichert wurde. – Ganbin

1

Von nun an $ serverRefresh() ist ein veraltetes Feature und wird in der nächsten 1.1.0 Release von dem Winkel Wakanda Anschluss wird auf jeden Fall entfernt werden. Sie könnten die $ fetch() - Methode für Ihre Entität verwenden, sie wird sie erneut abrufen und alle ihre Attribute aktualisieren. Übernehmen Sie dann Ihre Änderungen und rufen Sie $ save() auf. Für eine neue gestaltete Einheit, können Sie gehen Sie wie folgt vor:

  var newProduct = ds.Product.$create(); 
      newProduct.productName = "myProductName"; 
      newProduct.price = 5.5; 
      newProduct.$save(); 

Und das $ save() auslösen das Ereignis init().

+0

Die $ create-Methode löst das init-Ereignis nicht aus. – Ganbin

+0

Es tut, ich habe es gerade getestet, Sind Sie sicher, dass Sie das Init-Ereignis veröffentlichen? Wenn Sie dies getan haben, fügen Sie einen Haltepunkt hinzu und prüfen Sie, ob der Debugger ausgeführt wird. –

+0

Das ist seltsam. Auf meiner Seite löst die Methode $ create die Methode init nicht aus. Ich habe es öffentlich gemacht (selbst wenn ich nie den Umfang einer Event-Server-Seite festlegen musste, es klingt seltsam für mich), die $ create-Methode ruft den Server nicht auf, also wie kann er irgendetwas auslösen? Bist du sicher, dass du die Entität nicht rettest? Denn das Speichern wird die Init gerade auslösen. Aber in meinem Fall möchte ich einige Dateien vor dem Speichern initialisieren. – Ganbin

Verwandte Themen