Legen Sie window.location mit TypeScript fest

80

Ich erhalte eine Fehlermeldung mit dem folgenden TypeScript-Code:

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

 }

Ich erhalte einen unterstrichenen roten Fehler für Folgendes:

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

Die Nachricht sagt:

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

Weiß jemand was das bedeutet?

huysentruitw
quelle

Antworten:

155

window.locationist vom Typ, Locationwährend .attr('data-href')eine Zeichenfolge zurückgegeben wird, sodass Sie sie zuweisen müssen, window.location.hrefdie ebenfalls vom Typ Zeichenfolge ist. Ersetzen Sie dazu Ihre folgende Zeile:

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

für dieses:

window.location.href = $link.attr('data-href');
Nelson
quelle
1
Ich stelle fest, dass die Einstellung in Browsern heute ein window.location = "some string"besonderes Verhalten aufweist. Siehe hier: stackoverflow.com/questions/2383401/… - Siehe die Kommentare zu Verhalten auf derselben Site, gleichem Ursprung und XHR.
Dai
23

Sie haben das verpasst href:

Standard, So window.location.hrefwie window.locationes technisch gesehen ein Objekt ist, das Folgendes enthält:

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

Versuchen

 window.location.href = $link.attr('data-href');
NullPoiиteя
quelle