مرحبًا ، لقد استخدمت 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')});
أيه أفكار؟
لقد صادفت شيئًا مشابهًا في الزاوية.
$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).
تشكرات.
هناك القليل ، أو حتى كبير "لكن" - إذا اتصلت في نافذة النمذجة النشطة ، فإن الأزرار لا تعمل.
من فضلك قل لي كيف أتخلص من هذه الآفة؟
التعليق الأكثر فائدة
يجب أن يعمل سجل وحدة التحكم ، ولكن فقط في حالة حدوث ذلك. تذكر أن Angular تحتاج إلى استدعاء $ range. إذا كنت تستخدم مكتبات أخرى لتحديث طرق العرض والنطاقات.
لذلك إذا كنت تستخدم تنبيهًا رائعًا ، فتأكد من أن رد الاتصال يبدو كما يلي: