Có rất nhiều câu trả lời cho câu hỏi này ở đây nhưng có vẻ như có một chút nhầm lẫn về những gì thực sự đang diễn ra ở đây.
Thứ nhất, tiền đề của bạn
"href ghi đè ng-click trong Angular.js"
sai. Điều thực sự đang xảy ra là sau lần nhấp của bạn, sự kiện nhấp chuột đầu tiên được xử lý bằng góc (được xác định bởi ng-click
chỉ thị trong góc 1.x và click
trong góc 2.x +) và sau đó nó tiếp tục lan truyền (cuối cùng sẽ kích hoạt trình duyệt điều hướng đến url được xác định bằng href
thuộc tính). (Xem phần này để biết thêm về truyền sự kiện trong javascript)
Nếu bạn muốn tránh điều này, thì bạn nên hủy truyền sự kiện bằng phương thức của giao diện Sự kiệnpreventDefault()
:
<a href="#" ng-click="$event.preventDefault();logout()" />
(Đây là chức năng javascript thuần túy và không liên quan gì đến góc cạnh)
Bây giờ, điều này đã giải quyết được vấn đề của bạn nhưng đây không phải là giải pháp tối ưu. Angular, một cách đúng đắn, thúc đẩy mô hình MVC . Với giải pháp này, mẫu html của bạn được trộn với logic javascript. Bạn nên cố gắng tránh điều này càng nhiều càng tốt và đặt logic của bạn vào bộ điều khiển góc của bạn. Vì vậy, một cách tốt hơn sẽ là
<a href="#" ng-click="logout($event)" />
Và trong phương thức logout () của bạn:
logout($event) {
$event.preventDefault();
...
}
Bây giờ sự kiện nhấp chuột sẽ không đến trình duyệt, vì vậy nó sẽ không cố tải liên kết được trỏ đến href
. (Tuy nhiên, lưu ý rằng nếu người dùng nhấp chuột phải vào liên kết và trực tiếp mở liên kết, thì sẽ không có sự kiện nhấp chuột nào cả. Thay vào đó, nó sẽ tải trực tiếp url được trỏ bởi href
thuộc tính.)
Về nhận xét về màu liên kết đã truy cập trong trình duyệt. Một lần nữa, điều này không liên quan gì đến góc cạnh, nếu bạn href="..."
trỏ đến một url được truy cập bởi trình duyệt của bạn theo mặc định, màu liên kết sẽ khác. Điều này được kiểm soát bởi CSS: đã thăm Bộ chọn , bạn có thể sửa đổi css của mình để ghi đè hành vi này:
a {
color:pink;
}
PS1 :
Một số câu trả lời gợi ý sử dụng:
<a href .../>
href
là một chỉ thị góc. Khi mẫu của bạn được xử lý theo góc, nó sẽ được chuyển đổi thành
<a href="" .../>
Hai cách đó về cơ bản là giống nhau.