2015-08-25 9 views
11

मेरे पास एक सार्वजनिक पृष्ठ और एक व्यवस्थापक पृष्ठ के साथ एक आवेदन है। लॉगिन के बाद मैं एक नए टैब में व्यवस्थापक पेज खोलना चाहता हूं। लॉगिन करने के बाद, मैंने इसका प्रयास किया है, लेकिन इसका कोई प्रभाव नहीं है। सार्वजनिक पृष्ठ (जहां लॉगिन है) बस पुनः लोड किया जा रहा है:एंगुलरजेएस - नए टैब में यूआरएल खोलें

var url = $state.href('/admin/overview'); 
$window.open(url, '_blank'); 

किसी भी सुझाव की सराहना की जाएगी। धन्यवाद।

जे एस:

+1

आप एक बेला में त्रुटि पुन: पेश और यहाँ लिंक पोस्ट कर सकते हैं? दुर्भाग्यवश –

+0

नहीं। मैं एक पहेली में कोड को सटीक रूप से पुन: पेश नहीं कर सकता। यह बहुत जटिल है। – VictorB

+0

क्या "/ admin/overview" मार्ग का नाम है? क्योंकि दस्तावेज़ों के अनुसार आप उस विधि का उपयोग यूआरआई (http://angular-ui.github.io/ui-router/site/#/api/ui.router.state.$state) के साथ नहीं कर सकते हैं। यह समस्या का हिस्सा हो सकता है – Sphaso

उत्तर

21

यहाँ एक काम कर JSFiddle है, तो आप $window इंजेक्षन करने से पहले आप इसे उपयोग कर सकते हैं

angular.module('myApp', []) 
    .controller('dummy', ['$scope', '$window', function ($scope, $window) { 
    $scope.redirectToGoogle = function() { 
     $window.open('https://www.google.com', '_blank'); 
    }; 
}]); 

HTML:

<div ng-app="myApp" ng-controller="dummy"> 
    <a ng-href="" ng-click="redirectToGoogle()">Hello</a> 
</div> 
+1

यह काम करता है अच्छी तरह से बाहरी यूआरएल (जैसे आपने प्रदान किया है) का उपयोग करते समय, लेकिन राउटर-यूई स्टेटस (या यूआरएल) का उपयोग करने का प्रयास करते समय यह काम नहीं करता है। – VictorB

11

यहाँ एक और काम कर रहा है JSFiddle

एचटीएमएल:

<div ng-controller="MyCtrl"> 
<a ng-href="{{url}}" target="_blank">Visit jsfiddle</a> 
</div> 

जे एस:

var myApp = angular.module('myApp',[]); 
function MyCtrl($scope) { 
    $scope.url ='http://jsfiddle.net/HB7LU/16771/'; 
} 
1

आप आपके लिए यह करने के लिए एक निर्देश हो सकता है।

directives.redirect = function ($location, $window, $rootScope) { 
 
    return { 
 

 
     link: function (scope, element, attrs) { 
 
      element.on("click", function() { 
 
       if (!attrs.newwindow || attrs.newwindow == false) { 
 
        $location.path(attrs.redirect); 
 
        scope.$apply(); 
 
       } 
 
       else { 
 
        var baseUrl = $location.$$absUrl.toString().substring(0, decodeURIComponent($location.$$absUrl).toString().indexOf($location.$$path.toString(), $location.$$absUrl.toString().indexOf("#")) + 1) + attrs.redirect; 
 
        $window.open(baseUrl); 
 
       } 
 
      }); 
 
     } 
 
    } 
 
}

और HTML में, आप एक नए टैब में खोलने के लिए निम्न का उपयोग कर सकते हैं:

<a redirect="/admin/overview" newwindow="true">Open in new tab</a> 
+0

यहां काम कर रहा है exmaple: https://jsfiddle.net/aniket_kulkarni/wdzjcgeL/ –

+0

आपका समाधान _blank url में # डाल रहा है। इस $ स्थान का उपयोग करें। $$ absUrl.split ('#') [0] + attrs.redirect; – PSA

संबंधित मुद्दे