Đặt window.location bằng TypeScript


81

Tôi gặp lỗi với mã TypeScript sau:

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

 }

Tôi nhận được một lỗi màu đỏ được gạch chân cho những điều sau:

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

Tin nhắn nói:

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

Có ai biết điều này?

Câu trả lời:


156

window.locationlà loại Locationtrong khi .attr('data-href')trả về một chuỗi, vì vậy bạn cũng phải gán nó cho window.location.hrefloại chuỗi. Để thay thế dòng sau của bạn:

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

cho cái này:

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

1
Tôi lưu ý rằng trong các trình duyệt ngày nay, cài đặt window.location = "some string"có hành vi đặc biệt, hãy xem tại đây: stackoverflow.com/questions/2383401/… - xem các nhận xét về hành vi cùng trang web, cùng nguồn gốc và XHR.
— Đài

23

bạn đã bỏ lỡ href:

Tiêu chuẩn, Để sử dụng window.location.hrefnhư window.locationlà một đối tượng về mặt kỹ thuật bao gồm:

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

thử

 window.location.href = $link.attr('data-href');
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.