Tôi đã chơi trò chơi này trong một thời gian dài, nhưng bản chất không đồng bộ của Angular khiến mọi người khó có thể tin tưởng vào mọi chỉ thị chơi độc đáo cùng nhau. Sau đó, tôi thấy câu trả lời của @ tosh, điều đó khiến tôi suy nghĩ.
Tôi nghĩ rằng đây kết hợp nhiều ưu điểm: Tạo một Chỉ thị và Thêm vào trước ngClick
Vì vậy, chỉ cần thêm chỉ thị này để ứng dụng của bạn, và sau đó thêm các "xác nhận chuột" thuộc tính liên kết của bạn, cũng như hàm confirmClick() cho ngClick của bạn.
Link:
<a href="#" ng-click="confirmClick() && deleteIt(id)" confirm-click>Delete</a>
Chỉ thị:
.directive('confirmClick', function() {
return {
link: function (scope, element, attrs) {
// setup a confirmation action on the scope
scope.confirmClick = function(msg) {
// msg can be passed directly to confirmClick('are you sure?') in ng-click
// or through the confirm-click attribute on the <a confirm-click="Are you sure?"></a>
msg = msg || attrs.confirmClick || 'Are you sure?';
// return true/false to continue/stop the ng-click
return confirm(msg);
}
}
}
})
này rất giống với tiêm xác nhận tiêu chuẩn() hộp thoại, nhưng vì bạn có nó trong một chỉ thị, bạn có thể tùy chỉnh cách bạn chọn để chạy hộp thoại xác nhận của bạn (có thể là một kiểu khá, thay vì hộp thoại cửa sổ).
**** THƯỞNG ĐÁP ****
tôi đã chơi với hơn này và tích hợp một giải pháp mà sử dụng một cửa sổ modal như thư xác nhận, chứ không phải là cửa sổ mặc định. Đây là giải pháp hoàn chỉnh: https://stackoverflow.com/a/23718694/1135826
Rất đẹp, đây là giải pháp tôi đã tìm kiếm, cảm ơn! – Soccertrash
Đây là cách tôi đã làm nó quá .. Nhưng, đây là một plunk hoạt động khá nhiều giống nhau ngoại trừ nó không quan tâm cho dù bạn có một ng-click hay không .. http://plnkr.co/edit/Cwu15Z8U6ok0MMF8p6Ks? P = xem trước – ganaraj
@ganaraj: Điều đó không có tác dụng khi tôi nhấn Cancel, bởi vì 'createEventHandler' của JQLite tiếp tục lặp qua tất cả các sự kiện bị ràng buộc, và không dừng lần thứ hai' bind ('click', ...) 'khỏi bị gọi. (Trình duyệt của tôi: Phiên bản Chrome 26.0.1410.65 trên Mac OSX 10.6.8) – Piran