2017-09-21 5 views
8

समस्या:
मैं मिठाई अलर्ट पर ठीक क्लिक करने के बाद एक पृष्ठ पर एक उपयोगकर्ता रीडायरेक्ट करना चाहते हैं, लेकिन उपयोगकर्ता पुनः निर्देशित नहीं कर रहा है जब तक मैं एक और मिठाई को खोलने किसी कारण से चेतावनी।
आप कोड पर टूट सकते हैं, लेकिन पेज पर कुछ भी नहीं होता है।SweetAlert2, तो फिर() - डोम को अद्यतन करने के तुरंत नहीं

समस्या का सरल उदाहरण: http://jsfiddle.net/ADukg/14306/

नोट: एक 0 दूसरा टाइमआउट सहित "समस्या का हल"

पुन: पेश करने:
1) तीर .. $ गुंजाइश के बाद पाठ नोट .name = "मूल", और आप इसे पृष्ठ पर प्रदर्शित कर सकते हैं।
2) "पहले क्लिक करें" बटन पर क्लिक करें। यह फ़ंक्शन $ scope.changeMe() चलाता है, जो $ scope.name को "देरी ......."
3 अपडेट करता है 3) अब तक, बटन के ऊपर टेक्स्ट बदलना चाहिए था। लेकिन यह तब तक नहीं है जब तक आप एक और मीठा चेतावनी नहीं खोलते हैं, पाठ वास्तव में
4) "फिर यहां" या "पहले क्लिक करें" बटन पर क्लिक करें, इसलिए एक और मीठी चेतावनी पॉप अप हो जाती है, और अंत में डोम बदल जाएगा।

मुझे यकीन है कि यह किसी भी तरह से AngularJS से संबंधित है, और 1.4.3 का उपयोग किया जाना चाहिए।

कोई विचार?

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> 

जे एस:

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; 
    } 
}) 
+3

जब तक स्वीट अलर्ट लाइब्रेरी को कोणीय के लिए डिज़ाइन नहीं किया गया था, तो यह कोणीय संदर्भ के बाहर संचालित होगा। बदलावों को प्रभावी होने के लिए कोणीय के पाचन चक्र को बुलाया जाना चाहिए। 'ng-click' पाचन चक्र लागू होता है, यही कारण है कि आप दूसरे क्लिक के बाद परिवर्तन देखते हैं। '$ टाइमआउट 'भी पाचन चक्र को बुलाता है। '$ स्कोप के साथ अपना उदाहरण देखें। $ आवेदन()' जोड़ा गया: http://jsfiddle.net/ADukg/14313/ –

+0

[ngSweetAlert] (https://github.com/oitozero/ngSweetAlert) जाने का तरीका है आप कोणीय के साथ उचित एकीकरण चाहते हैं, अन्यथा आपको उपरोक्त @AlexK उल्लेखों के रूप में '$ scope। $ लागू()' का उपयोग करके ऐसे मॉडल परिवर्तनों के कोणीय को मैन्युअल रूप से सूचित करना होगा। –

+0

@AlexK ने मेरी समस्या को हल किया। मैंने एक कोणीय रैपर फैक्ट्री बनाया जो कॉल करता है कि हर बार जब हम एक मीठा चेतावनी का उपयोग करते हैं। आपकी सहायताके लिए धन्यवाद!पुष्टिकरण मैथ्यू कैली के लिए धन्यवाद! – Sergnio

उत्तर

1

मैं अपने बेला में कुछ समस्याओं को देखने

1) Swal एक कोणीय पुस्तकालय नहीं है। तो यह कोणीय पाचन चक्र के साथ काम नहीं करेगा, यही कारण है कि यह $ टाइमआउट के बाद ही काम करता है। this ट्यूटोरियल बताता है कि इसे क्यों और कैसे ठीक किया जाए।

2) मुझे लगता है कि आपने ng sweet alert को निर्भरता के रूप में जोड़ा है लेकिन इसे कोणीय से पहले कहा जाता है, इसलिए यह आपके पहेली में पंजीकृत नहीं होता है और एक कंसोल त्रुटि होती है।

3) यदि आप एनजी-स्वीट-अलर्ट का उपयोग करने की कोशिश कर रहे थे तो यह इस वाक्यविन्यास का उपयोग नहीं करता है। आपको इसे पहले से ही

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

और यह एक वादा वापस नहीं करता है और इसे अलग-अलग कहा जाना चाहिए।

SweetAlert.swal("Here's a message"); 
संबंधित मुद्दे