2015-05-16 3 views
6

Quello che voglio fare è seguito in, ma in una nuova scheda o la finestra nuova:angolare uiRouter stato aperto in una nuova finestra o scheda con stateParams

$state.go('studentsReport', { 
     type: $scope.report.type, // string 
     selectedStudents: $scope.selectedStudents // array of strings 
}); 

Se l'ho fatto:

var link = $state.href('studentsReport', { 
     type: $scope.report.type, 
     selectedStudents: $scope.selectedStudents 
}); 

window.open(link, '_blank');` 

I perderebbe i parametri.

Con i migliori saluti, Marcel

risposta

5

Si dovrebbe cercare di utilizzare questo:

/* @ngInject */ 
function SomeCtrl ($state, $window) { 
    $window.open($state.href('stateName', {}, {absolute: true}), '_blank'); 
} 

Nota: il /* ngInject */ facilita la dipendenza automatica iniezione annotazione se si utilizza ng-annotate (disponibile in cli, gulp e grunt aromi)

+1

Grazie per voi risposta, ma questo non funziona. Ma devo dire che non ho usato il commento/* @ngInject * /, assumendo che sia solo un commento – molerat

+0

@molerat Devo dire che non ho impostato i parametri nel secondo argomento di [$ state.href] (http: //angular-ui.github.io/ui-router/site/#/api/ui.router.state.$state) funzione. Dovresti provare a impostare il loro. –

+0

Lo so, li ho impostati loro e non ha funzionato. Quale URL dovrebbe '$ stato.href ('stateName', {test: 'bla'}, {absolute: true})' return se diciamo che l'url normale sarebbe http: // localhost/stateName? – molerat

0

utilizzare ng-clic sul tag di collegamento e chiamare una funzione. in funzione inserisci i tuoi parametri in LocalStorage. poi in app.run usa $ rootScope. $ on ("$ stateChangeStart") e controlla se localstorage ha parametri get e chiama $ state con params.

//in page controller: 
 
var openNewTab = function() {     
 
        localStorage.newTab = JSON.stringify({ 
 
         state: "yourState", 
 
         params: { 
 
          param1: "someparam1", 
 
          param2:"someparam2" 
 
         } 
 
        });     
 
        window.open(document.location.origin); 
 
         
 
       } 
 
    
 
//angular app run config: 
 
angularApp.run(function($state){ 
 
if(localStorage.newTab){ 
 
    var newTab = JSON.parse(localStorage.newTab); 
 
    localStorage.removeItem("newTab"); 
 
    $state.go(newTab.state, newTab.params); 
 
    event.preventDefault(); 
 
} 
 
})
<a ng-click="openNewTab()" >open new tab</a>