Helpex - Trao đổi & giúp đỡ Đăng nhập
8

VẤN ĐỀ:
Tôi muốn chuyển hướng người dùng đến một trang khác sau khi nhấp vào OK trên cảnh báo ngọt ngào, nhưng người dùng không được chuyển hướng cho đến khi tôi mở một cảnh báo ngọt ngào khác vì một số lý do.
Bạn có thể ngắt qua mã, nhưng không có gì xảy ra trên trang.

Ví dụ đơn giản của vấn đề: http://jsfiddle.net/ADukg/14306/

LƯU Ý : bao gồm thời gian chờ 0 giây "giải quyết vấn đề"

Để tạo lại:
1) Lưu ý văn bản sau mũi tên .. $ scope.name = "original", và bạn có thể thấy nó được hiển thị trên trang.
2) Nhấp vào nút "nhấp chuột đầu tiên". Thao tác này chạy hàm $ scope.changeMe (), cập nhật $ scope.name thành "delay ......."
3) Hiện tại, văn bản phía trên các nút đã được thay đổi. Nhưng phải đến khi bạn mở một cảnh báo ngọt ngào khác thì văn bản mới thực sự thay đổi
4) Nhấp vào nút "rồi vào đây" hoặc "nhấp trước" để một cảnh báo ngọt khác bật lên và DOM cuối cùng sẽ thay đổi.

Tôi khá chắc rằng điều này bằng cách nào đó có liên quan đến AngularJS và 1.4.3 phải được sử dụng.

Có ý kiến ​​gì không?

HTML:

<div ng-controller="MyCtrl">
  <div>
    <button ng-click="changeMe()">click first</button>
    <button ng-click="decoy()">then here</button>
  </div>
  <div>
    <button ng-click="reset()">reset text</button>
  <div>
</div>

JS:

var myApp = angular.module('myApp',[]);

myApp.controller("MyCtrl", function($scope, $timeout) {
    $scope.name = 'original';
    $scope.copy = angular.copy($scope.name);

    $scope.changeMe = function() {
      swal("Text should change now")
      // runs on hitting "OK"
      .then(function() {
                  // UNCOMMENT THIS and re-run the fiddle to show expected behavior
          // $timeout(function() { $scope.displayErrorMsg = false; }, 0);
          $scope.name = 'delayed.......'
      })
    }

    $scope.decoy = function() {
        swal("Look at the text now");
    }

    $scope.reset = function() {
        $scope.name = $scope.copy;
    }
})
8 hữu ích 3 bình luận 837 xem chia sẻ
2

Tôi thấy một số vấn đề trong trò chơi của bạn

1) swal không phải là một thư viện góc cạnh. Vì vậy, nó sẽ không hoạt động cùng với chu kỳ thông báo góc, đó là lý do tại sao nó chỉ hoạt động sau khi $ timeout được gọi. hướng dẫn này giải thích tại sao và cách khắc phục.

2) Tôi thấy bạn đã thêm ng sweet alert làm phụ thuộc nhưng nó được gọi trước angle, vì vậy nó không đăng ký trong fiddle của bạn và có lỗi bảng điều khiển.

3) Nếu bạn đang cố sử dụng ng-sweet-alert, nó không sử dụng cú pháp này. Trước tiên, bạn cần đưa nó vào giai đoạn triển khai

var myApp = angular.module('myApp',['oitozero.ngSweetAlert']);

Và nó không trả lại một lời hứa và nó cần được gọi theo cách khác.

SweetAlert.swal("Here's a message");
2 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ javascript angularjs sweetalert sweetalert2 , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading