Sweetalert: وظيفة على تأكيد لا تعمل

تم إنشاؤها على ١٠ أكتوبر ٢٠١٤  ·  9تعليقات  ·  مصدر: t4t5/sweetalert

مرحبًا ، لقد استخدمت SweetAlert من قبل بنجاح ولكنني حاولت استخدامه اليوم مع Ionic ولدي مشكلة.
عندما أستخدمه على هذا النحو ، فإنه ينفذ وظيفة شيء ما ولكنه لا ينتظر الضغط على زر التأكيد:

$scope.something=function(){console.log('test')};
swal({title: 'True',text: '',type: 'success',confirmButtonText: 'Next' },$scope.something());

عندما أستخدمه على هذا النحو ، فإنه لا يعمل على الإطلاق:

swal({title: 'True',text: '',type: 'success',confirmButtonText: 'Next' },function(){console.log('test')});

أيه أفكار؟

التعليق الأكثر فائدة

يجب أن يعمل سجل وحدة التحكم ، ولكن فقط في حالة حدوث ذلك. تذكر أن Angular تحتاج إلى استدعاء $ range. إذا كنت تستخدم مكتبات أخرى لتحديث طرق العرض والنطاقات.

لذلك إذا كنت تستخدم تنبيهًا رائعًا ، فتأكد من أن رد الاتصال يبدو كما يلي:

$scope.something=function(){
  console.log('test');
  // You might have something that updates your scope here
  ...
  $scope.$digest();
};
swal({
    title: 'True',
    text: '',
    type: 'success',
    confirmButtonText: 'Next' 
  }, $scope.something);

ال 9 كومينتر

لقد صادفت شيئًا مشابهًا في الزاوية.

$scope.deleteSomething = function () {
    swal({   title: 'Are you sure?', text: 'Your will not be able to recover this thing!',
                type: 'warning',
                showCancelButton: true, confirmButtonColor: '#DD6B55',
                confirmButtonText: 'Yes, delete it!', closeOnConfirm: false },
                function () {
                    // Code to delete something
                    swal('Deleted!', 'It was deleted.', 'success');
                   // The success alert only shows for a split second and is gone
                }
          });

يبدو أنه شيء يتعلق بامتلاكه في وظيفة تسمى في النطاق أو مجرد وجوده في callbak ولكن ماذا أعرف :)

إذا اكتشفت ذلك ، فسأنشر هنا. يبدو أن شيئًا مشابهًا يحدث هنا: https://github.com/t4t5/sweetalert/issues/52

قد تكون مخطئًا ، لكن يبدو أنك بحاجة إلى إزالة الأقواس الموجودة في النطاق $. شيء () مثل معاودة الاتصال ، مثل

swal({title: 'True',text: '',type: 'success',confirmButtonText: 'Next' },$scope.something);

عندما تقوم بتضمين الأقواس ، يقوم مترجم JS بتنفيذ $ range.something () وتعيين النتيجة على أنها رد نداء ، ولهذا السبب لا ينتظر الضغط على زر التأكيد. في المثال الثاني ، تقوم بتمرير تعريف الوظيفة في (مثل مجرد تمرير نطاق $. شيء بدون أقواس) وهذا هو سبب نجاح ذلك.

شكرًا ، لكنني حاولت ذلك بالفعل ولم أفعل شيئًا

@ schris12 تحقق من ngSweetAlert . ربما يمكن أن تساعد

يجب أن يعمل سجل وحدة التحكم ، ولكن فقط في حالة حدوث ذلك. تذكر أن Angular تحتاج إلى استدعاء $ range. إذا كنت تستخدم مكتبات أخرى لتحديث طرق العرض والنطاقات.

لذلك إذا كنت تستخدم تنبيهًا رائعًا ، فتأكد من أن رد الاتصال يبدو كما يلي:

$scope.something=function(){
  console.log('test');
  // You might have something that updates your scope here
  ...
  $scope.$digest();
};
swal({
    title: 'True',
    text: '',
    type: 'success',
    confirmButtonText: 'Next' 
  }, $scope.something);

oitozero - يعمل ngSweetAlert مثل السحر! شكرا!

oitozero ، عملت ngSweetAlert لي أيضًا. شكرا!
شكرًا لك blaiprat أيضًا على النصيحة والمساعدة في فهم المشكلة.

تضمين التغريدة
مذهل. : +1:

أصدرت للتو إصدارًا جديدًا ليعكس التغييرات في sweetalert (0.2.0).

تشكرات.
هناك القليل ، أو حتى كبير "لكن" - إذا اتصلت في نافذة النمذجة النشطة ، فإن الأزرار لا تعمل.
من فضلك قل لي كيف أتخلص من هذه الآفة؟

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

daftspunk picture daftspunk  ·  4تعليقات

krishnamraju picture krishnamraju  ·  3تعليقات

xgqfrms-GitHub picture xgqfrms-GitHub  ·  4تعليقات

Untit1ed picture Untit1ed  ·  5تعليقات

mateuszjarzewski picture mateuszjarzewski  ·  4تعليقات