2016-04-26 10 views
0

Ich verwende Sammy-Routing auf einer ASP.NET MVC-Webanwendung, basierend ursprünglich auf der Standard-MS-Vorlage für eine SPA-Webanwendung, die Knockout und Sammy verwendet, um Seitenladungen/Routing zu verwalten. Ich bin neu bei Sammy, also verstehe ich es nicht gut, aber meine Erwartung ist, dass die/# -Suchroute ausgeführt würde, selbst wenn es die erste Seitenladung ist, aber es scheint, als ob es nicht ist. Die Route "/" wird immer bei einer "kalten" Seitenladung ausgeführt.Sammy-Routing funktioniert nicht wie erwartet

Grundsätzlich, wenn ich die App im Debug-Modus ausführen, funktioniert alles einwandfrei. Die # Home- und # Search-Routen funktionieren wie erwartet. Aber wenn, beim Debuggen, fügen ich diese URL in einem neuen Tab oder Browser-Sitzung:

http://pr-dev.dav1.net.fmcti.com/#search/101-4155

Dann, anstatt die/# Suchroute Code ausgeführt wird, scheint es, dass die „/“ Route Code ausgeführt wird . Führt diese Route immer bei einer neuen Sitzung aus, unabhängig davon, ob der Begriff #search in der URL vorhanden ist? Hier ist das Typoskript Code in meiner Homepage Ansichtsmodell, wo das SPA-Routing konfiguriert ist:

 // configure SPA routing 
 
     Sammy(function() { 
 
      this.get("#home",() => { 
 
       if (app.view() !== self) { 
 
        // load page view model 
 
        app.view(self); 
 
       } 
 
       // clear out any search results 
 
       self.hideResults(); 
 
       self.queryTree.refreshDataSource([]); 
 
       self.partSummary(new SR.PR.Query.QueryResult()); 
 
       self.searchBox.setValue(""); 
 
      }); 
 

 
      this.get("/", function() { 
 
       this.app.runRoute("get", "#home"); 
 
      }); 
 

 
      this.get("#search/:pn", function() { 
 
       if (app.view() !== self) { 
 
        app.view(self); 
 
       } 
 
       const pn = this.params["pn"]; 
 
       if (pn) { 
 
        SR.PR.Query.doPartSearch(self, pn.toUpperCase()); 
 
       } 
 
      }); 
 

 
     });

Vielen Dank im Voraus für Ihre Hilfe!

Antwort

1

Wenn Sie den Hash verwenden, versuchen Sie, die Routen mit '#/<the_path>' statt zu definieren. Weitere Beispiele finden Sie in der Dokumentation: http://sammyjs.org/docs/routes Ich denke, das wird Ihr Problem beheben.

Wenn jedoch die Route '/' weiterhin zuerst ausgeführt wird, versuchen Sie, sie an der letzten Position zu definieren.

+0

Vielen Dank für Ihre schnellen Vorschläge. Dies war nicht mein Problem, wie sich herausstellte, aber es half mir sicherlich, es besser zu verstehen. Ich werde meine endgültige Lösung separat veröffentlichen. –

1

Dieses Problem stellte sich als Problem mit einem anderen Bereich im Code heraus. In der Init-Funktion des Haupt-App-View-Models habe ich die Funktion #home route aufgerufen. Außerdem habe ich an anderer Stelle irrtümlich diese Init-Funktion vor die Funktion ko.applyBindings aufgerufen. Alles funktioniert besser, sobald ich den Auftrag umgestellt habe.

Verwandte Themen