2015-05-16 11 views
6

Co chcę zrobić podąża jednak w nowej karcie lub w nowym oknie:kątowa uiRouter stan otwarty w nowym oknie lub karcie z stateParams

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

Jeśli zrobiłem:

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

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

I straciłoby parametry.

poważaniem, Marcel

Odpowiedz

5

Należy próbuje użyć tego:

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

Uwaga: /* ngInject */ ułatwia automatyczny Dependency Injection adnotacji w przypadku korzystania NG-adnotacje (dostępny w cli, gulp i grunt smaki)

+1

Dzięki za odpowiedz, ale to nie działa. Ale muszę powiedzieć, że nie użyłem komentarza/* @ngInject * /, zakładając, że to tylko komentarz – molerat

+0

@molerat Muszę powiedzieć, że nie ustawiłem params w drugim argumencie [$ state.href] (http: //angular-ui.github.io/ui-router/site/#/api/ui.router.state.$state) funkcja. Powinieneś spróbować ustawić ich. –

+0

Wiem, ustawiłem je i nie zadziałało. Jaki adres powinien mieć '$ state.href ('stateName', {test: 'bla'}, {absolute: true})' return, jeśli powiemy, że normalny URL będzie http: // localhost/stateName? – molerat

0

użyj ng-click na łączu i wywołaj funkcję. w funkcji ustaw twoje parametry w LocalStorage. następnie w app.run użyj $ rootScope. $ on ("$ stateChangeStart") i sprawdź czy localstorage posiada parametry pobierające parametry i wywołujące $ state z parametrami.

//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>

Powiązane problemy