2015-12-16 5 views
5

मैं वर्तमान में Angular.js का उपयोग कर एक छोटा सा आवेदन पर काम कर रहा हूँ मेरी नजर में मैं बटनAngular.js केवल क्लिक पहले पर बुलाया समारोह onclick

<md-button class="md-primary" ng-click="editUser(user, $event)">Edit</md-button> 

editUser विधि इस तरह दिखता है निम्नलिखित है:

$scope.editUser = function (user, $event) { 

    $scope.userToEdit = user; 

    $mdDialog.show({ 
      controller: DialogController, 
      targetEvent: $event, 
      templateUrl: '/js/modules/user/views/edit.tmpl.html', 
      parent: angular.element(document.body), 
      clickOutsideToClose: true, 
      scope: $scope 
     }) 
     . 
     then(function (answer) { 
      if (answer == "save") { 
       for (right in $scope.allSystemRightsStatements) { 
        if ($scope.allSystemRightsStatements[right].selected) { 
         if($scope.userToEdit.rights==null){ 
          $scope.userToEdit.rights = []; 
         } 
         $scope.userToEdit.rights.push($scope.allSystemRightsStatements[right]); 
        } 
       } 
       $scope.updateUser($scope.userToEdit); 
      } 
      $scope.userToEdit = {}; 
     }, function() { 
      $scope.userToEdit = {}; 
     }); 
}; 

$scope.updateUser = function (user) { 
    //userService.updateUser makes a $http PUT request 
    var promise = userService.updateUser(user); 
    promise.then(function (result) { 
     $mdToast.show(
      $mdToast.simple(result.message) 
       .position($scope.getToastPosition()) 
       .hideDelay(3000) 
     ); 
    }, function (reason) { 
     $mdToast.show(
      $mdToast.simple(reason) 
       .position($scope.getToastPosition()) 
       .hideDelay(3000) 
     ); 
    }, function (update) { 
    }); 
}; 

अब संवाद अच्छी तरह से दिखाया गया है और उत्तर कार्य को भी अपेक्षित सबकुछ कहा जाता है।

हालांकि, जब मैं बटन को दूसरी बार क्लिक करता हूं तो editUser funciton निष्पादित नहीं होता है। जैसे कि बटन से ऑनक्लिक ईवेंट को संवाद बंद कर दिया गया था।

इस समस्या को हल पर कोई मदद बहुत सराहना की है, धन्यवाद

+0

आप कंसोल लॉग में किसी भी त्रुटि देख पा रहे हैं के साथ बाध्यकारी नहीं है (गुंजाइश आप mdDialog करने से गुजर रहे हैं के बारे में)? –

+0

आपकी त्रुटि ** में हो सकती है .. कुछ छोटे तर्क ** आपके कोड का हिस्सा ... यह इस तथ्य के कारण भी हो सकता है कि आप '$ scope.updateUser' के साथ एसिंक विधि को कॉल कर रहे हैं और फिर एक एम्पी ऑब्जेक्ट को तुरंत $ $ scope.userToEdit' सेट करें। '$ scope.updateUser' के पास ऐसा करने का समय नहीं था जो वह करना चाहता था और आप पास ऑब्जेक्ट को खाली ऑब्जेक्ट पर सेट करते हैं ... – ezcoding

+0

कोई कंसोल लॉग खाली नहीं है :-( अद्यतन वास्तव में सही तरीके से किया जाता है (जैसा कि डीबी द्वारा प्रतिबिंबित किया गया है)। मैं स्पष्टीकरण के लिए छोटा तर्क जोड़ूंगा। – bwright

उत्तर

3

के रूप में कहा here

यह शायद एक अच्छा विचार है स्पष्ट रूप से उल्लेख करने के लिए संवाद छुपा पर कि गुंजाइश नष्ट हो जाएगा (ताकि लोगों को सीधे नियंत्रक के $ दायरे को पारित नहीं करना चाहिए)।

तो, के रूप में गुंजाइश नष्ट हो जाता है, कोणीय अपने बटन किसी भी कार्रवाई

+0

स्पष्टीकरण के लिए: मैंने '$ mdDialog.show' कॉल से' स्कोप: $ स्कोप 'हटा दिया और 'स्थानीय: {उपयोगकर्ता: उपयोगकर्ता, .. अन्य ऑब्जेक्ट्स}' – bwright

संबंधित मुद्दे