115 votes

Définir window.location avec TypeScript

J'obtiens une erreur avec le code TypeScript suivant :

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

 }

Je reçois une erreur soulignée en rouge pour ce qui suit :

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

Le message dit :

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

Quelqu'un sait-il ce que cela signifie ?

218voto

Nelson Points 19623

window.location est de type Location tandis que .attr('data-href') retourne une chaîne de caractères, vous devez donc l'assigner à window.location.href qui est également de type chaîne de caractères. Pour cela, remplacez votre ligne suivante :

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

pour celui-ci :

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

37voto

NullPoiиteя Points 23754

Vous avez manqué le href :

Standard, à utiliser window.location.href como window.location est techniquement un objet contenant :

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

essayez

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

0voto

Top-Master Points 157

Lors de la mise en œuvre d'une intégration complexe de PayPal, j'ai remarqué une raison très convaincante d'utiliser  window.location que il n'est pas nécessaire  SAME ORIGIN .

Nous avons donc fait quelque chose comme :

(<any> window).location = myUrl;

Au lieu de :

window.location.href = myUrl;

Où dans le cas de l'OP :

var myUrl = $link.attr('data-href');;

-3voto

Donn Frederick Points 1

Il suffit d'ajouter href

Comme ça :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X