2015-05-16 17 views
6

Những gì tôi muốn làm là sau nhưng trong một Tab mới hoặc cửa sổ mới:góc uiRouter trạng thái mở trong cửa sổ mới hoặc tab với stateParams

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

Nếu tôi đã làm:

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

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

tôi sẽ mất các thông số.

Trân trọng, Marcel

Trả lời

5

Bạn nên cố gắng sử dụng này:

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

Lưu ý: /* ngInject */ tạo điều kiện cho sự phụ thuộc tự động tiêm chú thích nếu sử dụng ng-chú thích (có sẵn trong cli, gulpgrunt hương vị)

+1

Cám ơn bạn trả lời, nhưng điều này không hoạt động. Nhưng tôi phải nói, tôi đã không sử dụng bình luận/* @ngInject * /, giả sử nó chỉ là một bình luận – molerat

+0

@molerat Tôi phải nói, tôi đã không đặt params trong đối số thứ hai của [$ state.href] (http: //angular-ui.github.io/ui-router/site/#/api/ui.router.state.$state) chức năng. Bạn nên cố gắng để thiết lập của họ. –

+0

Tôi biết, tôi đặt chúng và nó không hoạt động. Url nào nên '$ state.href ('stateName', {test: 'bla'}, {absolute: true})' trả về nếu chúng ta nói url bình thường sẽ là http: // localhost/stateName? – molerat

0

sử dụng ng-click vào thẻ liên kết và gọi hàm. trong hàm đặt các tham số của bạn trong LocalStorage. sau đó trong app.run sử dụng $ rootScope. $ on ("$ stateChangeStart") và kiểm tra xem localstorage có tham số nhận params và gọi $ state với params hay không.

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

Các vấn đề liên quan