2015-12-16 17 views
5

Tôi hiện đang làm việc trên một ứng dụng nhỏ sử dụng Angular.JS Theo quan điểm của tôi, tôi đã nútAngular.JS onclick chức năng chỉ kêu gọi đầu tiên bấm

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

phương pháp edituser trông giống như sau sau:

$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) { 
    }); 
}; 

Bây giờ hộp thoại được hiển thị độc đáo và chức năng trả lời cũng được gọi, mọi thứ như mong đợi.

Tuy nhiên, khi tôi nhấp vào nút lần thứ hai, trình chỉnh sửa funciton sẽ không được thực hiện. Như thể sự kiện onClick từ nút đã bị xóa ở hộp thoại gần.

Bất kỳ giúp đỡ về giải quyết vấn đề này được đánh giá rất nhiều, Cảm ơn

+0

làm bạn thấy bất kỳ lỗi trong giao diện điều khiển đăng nhập? –

+0

lỗi của bạn có thể nằm trong ** .. một số logic nhỏ ** một phần mã của bạn ... Nó cũng có thể là do thực tế, rằng bạn đang gọi một phương thức async với '$ scope.updateUser' và sau đó ngay lập tức thiết lập '$ scope.userToEdit' thành một đối tượng empy. '$ scope.updateUser' có thể không có thời gian để hoàn thành những gì nó có ý định làm và bạn đặt đối tượng được truyền cho một đối tượng trống ... – ezcoding

+0

Không có nhật ký console nào trống :-( Cập nhật thực sự được thực hiện đúng (như được phản ánh bởi DB) Tôi sẽ thêm logic nhỏ để làm rõ – bwright

Trả lời

3

Như đã nói here

nó có lẽ là một ý tưởng tốt để rõ ràng đề cập rằng phạm vi sẽ bị phá hủy khi ẩn hộp thoại (như vậy mọi người không nên vượt qua phạm vi $ của bộ điều khiển trực tiếp).

(liên quan đến phạm vi bạn đang đi qua để mdDialog)

Vì vậy, như phạm vi bị phá hủy, góc không ràng buộc nút của bạn với bất kỳ hành động

+0

Để làm rõ: tôi đã xóa 'phạm vi: $ scope' khỏi lệnh' $ mdDialog.show' và thêm 'locals: {user: user, .. other objects}' – bwright

Các vấn đề liên quan