2013-08-20 37 views
5

Vì vậy, ngay bây giờ tôi đã cấu hình html5mode.Url đăng xuất trong html5mode angularjs?

$locationProvider.html5Mode(true); 
    $locationProvider.hashPrefix('!'); 

Đây là kết thúc của middelware tôi cho nhanh để hỗ trợ html5mode

app.use(function (req, res) { 
    if (!req.path.match('/calendar|/user|/create|/profile')) { 
     return res.send(404); 
    } 
    res.render('home/index', { 
     currentUser: req.user 
    }); 
}); 

Và tất cả các url của tôi đang làm việc tốt trong Chrome và Firefox 3.6 (mà tôi đang sử dụng để kiểm tra dự phòng hashbang).

Vấn đề duy nhất của tôi là với tuyến đăng xuất. Đăng xuất của tôi là tương tác với máy chủ. Vì vậy, tôi đã làm điều này.

$rootScope.logout = function() { 
     window.location = '/logout'; 
    }; 

Và tạo một cú nhấp chuột vào chức năng này và hoạt động để đăng xuất trong Chrome. Làm thế nào tôi sẽ làm điều này trong chế độ dự phòng hashbang? Nó không hoạt động trong Firefox 3.6. Cảm ơn!

+0

Bạn có thể thử '$ location.url ('/ logout')' – zsong

+0

Đó là điều đầu tiên tôi đã thử. Không hoạt động trong hoặc ngoài html5mode –

+0

Vâng, tôi nghĩ bạn có thể phát hiện trình duyệt để xem liệu trình duyệt có hỗ trợ pushState hay không. Nếu không thì hãy thêm '#!' Theo cách thủ công. :) – zsong

Trả lời

11

Thêm một target = "_ self" để liên kết như thế này:

<a href="/logout" target="_self">Logout</a> 

AngularJS bỏ qua mối liên hệ với một thuộc tính mục tiêu. Đây là tài liệu ở đây: HTML link rewriting (tìm kiếm _self).

Các vấn đề liên quan