टाइपस्क्रिप्ट के साथ window.location सेट करें


85

मुझे निम्न टाइपस्क्रिप्ट कोड के साथ एक त्रुटि मिल रही है:

 ///<reference path='../../../Shared/typescript/jquery.d.ts' />
 ///<reference path='../../../Shared/typescript/jqueryStatic.d.ts' />

 function accessControls(action: Action) {
    $('#logoutLink')
        .click(function () {
            var $link = $(this);
            window.location = $link.attr('data-href');
        });

 }

मुझे निम्न के लिए एक रेखांकित लाल त्रुटि मिल रही है:

$link.attr('data-href'); 

संदेश कहता है:

Cannot convert 'string' to 'Location': Type 'String' is missing property 'reload' from type 'Location'

क्या किसी को पता है कि इसका क्या मतलब है?

जवाबों:


164

window.locationप्रकार का है, Locationजबकि .attr('data-href')एक स्ट्रिंग लौटाता है, तो आप इसे window.location.hrefजो स्ट्रिंग प्रकार की है भी असाइन करना है। उसके लिए अपनी निम्नलिखित पंक्ति बदलें:

window.location = $link.attr('data-href');

इस एक के लिए:

window.location.href = $link.attr('data-href');

1
मैं ध्यान देता हूं कि आज ब्राउज़र में सेटिंग window.location = "some string"का विशेष व्यवहार है, यहां देखें: stackoverflow.com/questions/2383401/… - समान-साइट, समान-मूल और XHR व्यवहार के बारे में टिप्पणियां देखें।
दाई

27

आपने याद किया href:

मानक, तकनीकी window.location.hrefरूप window.locationसे उपयोग की जाने वाली वस्तु है:

Properties
hash 
host 
hostname
href    <--- you need this
pathname (relative to the host)
port 
protocol 
search 

प्रयत्न

 window.location.href = $link.attr('data-href');
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.