Đặ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 cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.