Ustaw window.location przy użyciu TypeScript

85

Otrzymuję błąd z następującym kodem TypeScript:

 ///<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');
        });

 }

Otrzymuję podkreślony czerwony błąd z następujących powodów:

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

Wiadomość mówi:

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

Czy ktokolwiek wie, co to znaczy?

huysentruitw
źródło

Odpowiedzi:

163

window.locationjest typu Locationwhile .attr('data-href')zwraca łańcuch, więc musisz przypisać go również do window.location.hreftypu string. W tym celu zamień następujący wiersz:

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

dla tego:

window.location.href = $link.attr('data-href');
Nelson
źródło
1
Zauważam, że w dzisiejszych przeglądarkach ustawienie window.location = "some string"ma specjalne zachowanie, patrz tutaj: stackoverflow.com/questions/2383401/… - zobacz komentarze dotyczące tej samej witryny, tego samego pochodzenia i zachowania XHR.
Dai
26

przegapiłeś href:

Standard, do użycia window.location.hrefw stanie window.locationtechnicznym obiekt zawierający:

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

próbować

 window.location.href = $link.attr('data-href');
NullPoiиteя
źródło