javascript - Postavljanje window.location s TypeScriptom
Dobivam pogrešku s sljedećim TypeScript kodom:
///<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');
});
}
Dobivam podcrtanu crvenu pogrešku za sljedeće:
$link.attr('data-href');
Poruka kaže:
Cannot convert 'string' to 'Location': Type 'String' is missing property 'reload' from type 'Location'
Zna li itko što ovo znači?
Odgovor #1
window.location je tipa Location, dok .attr('data-href') vraća string, pa ga morate dodijeliti na window.location.href koji je također tipa string. Za to zamijenite sljedeći redak:
window.location = $link.attr('data-href');
za ovo:
window.location.href = $link.attr('data-href');
Odgovor #2
propustili ste href:
Standardno, za korištenje window.location.href kao window.location tehnički je objekt koji sadrži:
Properties
hash
host
hostname
href <--- you need this
pathname (relative to the host)
port
protocol
search
pokušati
window.location.href = $link.attr('data-href');
Odgovor #3
Na sučelju Location postoji metoda assign koja savršeno funkcionira s Typescriptom kada joj se proslijedi string i radi isto kao window.location=LOCATION.
window.location.assign('http://example.com');
interface Location {
...
/** Navigates to the given URL. */
assign(url: string | URL): void;
}
Čini se da metoda postoji već dugo vremena (IE 5.5!).
https://developer.mozilla.org/en-US/docs/Web/API/Location/assign
