2017-07-10 3 views
-1

Ich habe ein altes System und zum Beispiel kann der Benutzer eine klick-rechts neue Tabelle auf einen Link tun und in der neuen Registerkarte das System wird auf der gleichen Seite geöffnet sein, aber jetzt habe ich ein neues System gebaut SPA mit angularjs und meine Benutzer wollen die gleiche Funktionalität aber immer, dass ich neue Registerkarte öffne das System auf der Hauptseite öffnen, natürlich ist ein SPA und das System nicht den Kontext sabe. Ich denke, dass ich einen Speicher erstellen muss, um dies zu erstellen, aber wird eine gute Praxis sein?SPA offene Seite auf neue Registerkarte

+0

https://stackoverflow.com/questions/23516289/angularjs-state-open-link-in-new-tab – Shantanu

+0

In Ihrem Beispiel ist immer offen eine neue Registerkarte, aber in meinem Fall brauche ich nur, wenn der Benutzer mit der rechten Maustaste klickt. –

Antwort

1

Wenn Sie möchten, dass es nur mit Rechtsklick funktioniert, dann benutzen Sie die unten stehende Funktion von ng-mousedown mit der Übergabe von $ event. Überprüfen Sie das Rechtsklick-Ereignis &, dann öffnen Sie den Status in einem neuen Tab.

$scope.openInNewTab = function(e){ 
    //console.log(e.button); 
    if(e.button === 2) { 
     var url = $state.href('PageTab.Page2', {}); 
     window.open(url,'_blank'); 
    } 
} 
<p ng-mousedown="openInNewTab($event)">Open page 2 in new tab</p> 

Hier arbeitet Plunker Link: https://plnkr.co/edit/mo96eXMLKfHkUWPKPG2m?p=preview

+0

Klingt gut! Aber in diesem Beispiel verwendeten Sie die Seiten in URL in meinem Fall verwende ich ausblenden, zeige ich nur die Domain alle Seiten unter "/" und mit diesem Beispiel nicht funktionieren –

+0

Wie verwenden Sie Routing in Ihrer Anwendung? (Verwenden Sie $ routeProvider oder $ stateProvider, um Routen zu definieren? Oder haben Sie kein Routing implementiert?) – Shantanu

+0

$ stateProvider .state ('fornecimento/info', { URL: '/', VorlageUrl: 'views/fornecimento /info.html ', params: { IDF: null, Contrato: null } }) –

Verwandte Themen