नए टैब में Angularjs $ स्टेट ओपन लिंक


81

मैं $ state.go फ़ंक्शन का उपयोग करके "नए टैब में खुले लिंक" को लागू करने का प्रयास कर रहा हूं। यह भयानक होगा अगर वहाँ की तरह था:

$state.go('routeHere', {
    parameter1 : "parameter"
    }, {
    reload : true,
    newtab : true // or smth like target : "_blank"
});

क्या एंगुलरजेएस का उपयोग करने का कोई तरीका है?


यह कहते हुए संपादित करें कि आपने इसे निम्न कोड के साथ हल किया है, निरर्थक लगता है। अर्थात। यह इस तथ्य से निहित है कि आपने इसे अपने स्वीकृत उत्तर के रूप में चुना था।
एडम ज़र्नर

फिक्स्ड, संपादित हटा दिया।
एलेक्स अरवानिटिडिस

आपको जवाब मिल सकता है यहाँ Angularjs $ राज्य खुले लिंक में नए टैब
Dalorzo

जवाबों:


153

अपडेट: ठीक है, मैंने निम्नलिखित कोड का उपयोग करके इसे हल किया है:

var url = $state.href('myroute', {parameter: "parameter"});
window.open(url,'_blank');

18
सबसे अच्छा अभ्यास के लिए $ खिड़की नहीं होना चाहिए?
tsuz

3
क्या आप सुनिश्चित हैं कि पैरामीटर को नई विंडो में पारित किया जा सकता है?
hjl

हाँ @elaijuh वे पारित किया जाएगा
मैनुअल डि Iorio

@alex मैं एक परिभाषित विंडो को लक्षित करना चाहता हूं, इसलिए मैंने window.open (url, 'myWindow') की कोशिश की; लेकिन यह काम नहीं करता है। कोई मदद?
mhd

1
ध्यान दें कि यदि आप इस तरह से जावास्क्रिप्ट से एक लिंक खोलते हैं और आधार यूआरएल बदल जाता है, तो संभावना है कि ब्राउज़र यह कहकर ब्लॉक कर देगा कि साइट ने पॉपअप खोलने की कोशिश की है, लेकिन यदि उपयोगकर्ता ऐसा करने के लिए आपकी वेबसाइट को स्वीकार या अधिकृत करता है, तो यह होगा काम।
गबेलरॉक्स

55

मैंने बस यही कोशिश की - जाहिर है, इसके target="_blank"साथ काम जोड़ना ui-sref:

<a ui-sref="routeHere" target="_blank">A Link</a>

अपने नियंत्रक में कोड जोड़ने की परेशानी से बचाता है, और आपको किसी भी सामान्य लिंक के साथ होवर पर URL देता है। जीत!


3
यह केवल एक <a> पर काम करता है। "लक्ष्य" अन्य तत्वों पर स्पष्ट रूप से काम नहीं करता है। यानी <बटन ui-sref = "मार्गहेयर" लक्ष्य = "_ रिक्त"> एक लिंक </ बटन>
लुइस

2
@Luis बटन में टारगेट एट्रीब्यूट नहीं है, इसलिए यह काम नहीं करेगा
gerl

1
@Luis शायद आप एंकर टैग के लिए बटन के रूप में बटन संबंधित कक्षाओं और भूमिका का उपयोग कर सकते हैं ताकि यह एक बटन की तरह दिख सके। जैसे:<a ui-sref="routeHere" target="_blank" class="btn btn-primary" role="button">A Link</a>
सफवान

7

मेरे पास एक समान मुद्दा था, यह कोशिश करें कि यदि पिछले उत्तरों में से कुछ भी आपके लिए काम नहीं करता है।

var url = '#' + $state.href('preview');
window.open(url,'_blank');

इसलिए मूल रूप से लोकलहोस्ट में काम करते समय, बिना किसी अप्वाइंटमेंट के '#'इसे सिर्फ रीडायरेक्ट किया गया

लोकलहोस्ट / पूर्वावलोकन

, के बजाय

लोकलहोस्ट / प्रोजेक्ट_नाम / / / पूर्वावलोकन

मैं यहाँ डेटा पास करने के बारे में नहीं ले रहा हूँ, बस नए टैब में $ राज्य खोलने के लिए।


6

यह उस स्थिति में काम नहीं कर सकता है जब आपका ऐप सबफ़ोल्डर में हो। मैं वास्तव में एक ही मुद्दा था।

मैंने ऑनलाइन कोशिश की है और इसका उपयोग करके उम्मीद के मुताबिक काम किया है:

<a ui-sref="routeHere" target="_blank">Link</a>

4
ui-sref="routeHere" href=""target="_blank"

इस कोड ने मेरी समस्या हल कर दी।

एंकर टैग में इसका उपयोग करें।


4

सबसे अच्छा जवाब जो मुझे मिला, वह ui.router का विस्तार कर रहा था, क्योंकि यह सुविधा मौजूद नहीं है, आप इसमें पूर्ण विवरण पा सकते हैं:

कोणीय 1.x यूआई-राउटर की $ स्थिति का विस्तार

हालाँकि, यहां इस बात की मेरी संक्षिप्त व्याख्या है कि इसे जोड़ने के लिए क्या करने की आवश्यकता है app.js या कोणीय ऐप इनिट फ़ाइल:

angular.module("AppName").config(['$provide', function ($provide) {
    $provide.decorator('$state', ['$delegate', '$window',
        function ($delegate, $window) {
            var extended = {
                goNewTab: function (stateName, params) {
                    $window.open(
                        $delegate.href(stateName, params, { absolute: true }), '_blank');
                }
            };
            angular.extend($delegate, extended);
            return $delegate;
        }]);
}]);

अपने कोड में

आप कर सकेंगे:

$state.goNewTab('routeHere', { parameter1 : "parameter"});

2

इसे इस्तेमाल करे!

<a ui-sref="routeHere({parameter: vm.parameter})" target="_blank"></a>


यह अप्रासंगिक है, मैंने यह नहीं कहा कि मुझे जिस रूट पर कॉल करना है, उसमें मुझे मापदंडों को जोड़ना होगा, मैंने कहा कि मैं इस रूट को एक नए टैब में खोलना चाहता हूं।
एलेक्स अर्वनिटिडिस

यह कई लोगों के लिए प्रासंगिक हो सकता है। मैंने बस यही इस्तेमाल किया। यहां उल्लेख करने के लिए एक बात यह है कि पैरामीटर नाम एकल उद्धरण में होना चाहिए। <a ui-sref="routeHere()'parameter': vm.parameter पड़ेगा)" target="_blank"> </a>
सुधीर मुहम्मद
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.