2013-04-29 33 views
6

Tôi đã có một nút được dùng để xóa một câu hỏi:Tại sao trình xử lý ng-click được kích hoạt hai lần?

<a class="btn-small float-right" data-ng-click="deleteQuestion(question)"> 
    <i data-ng-class="{true: 'icon-step-backward', false: 'icon-remove'} 
    [question.IsDeleted]"></i> 
</a> 

Đây là mã đằng sau nút:

$scope.deleteQuestion = function (data) { 
    if (data.IsDeleted) { 
     data.IsDeleted = false; 
     for (var i = 0; i < deletedQuestions.length; i++) { 
      if (deletedQuestions[i] == data) { 
       deletedQuestions.splice(i, 1); 
      } 
     } 
    } else { 
     data.IsDeleted = true; 
     if ($.inArray(data, deletedQuestions) === -1) { 
      deletedQuestions.push(data); 
     } 
    } 
}; 

Bây giờ khi tôi bấm nút Tôi nhận thấy các chức năng đã bị sa thải hai lần. Lần đầu tiên nó xóa câu hỏi, lần thứ hai nó hoàn tác hành động đó.

Điều tôi muốn là một nút để xóa câu hỏi và khi bạn nhấp lại câu hỏi, nó sẽ hoàn tác tác vụ đó.

Tôi chỉ tự hỏi những gì tôi đã bỏ qua ...

EDIT Đây là một fiddle: http://jsfiddle.net/rquackenbush/AbWKs/

+2

bạn có thể chia sẻ fiddle –

+0

Có thay đổi nếu bạn thêm 'href =" # "' vào liên kết của mình không? (đó chỉ là một dự đoán hoang dã.) – TheHippo

+1

Tôi chia sẻ một fiddle sao chép hành vi này – RQDQ

Trả lời

5

tôi phát hiện ra những gì các vấn đề được.

Liên kết là bên trong một danh sách:

<li class="question-item" 
    data-app-bind-html="question.template">       
     <a class="btn-small float-right" data-ng-click="deleteQuestion(question)"> 
     <i data-ng-class="{true: 'icon-step-backward', false: 'icon-remove'} [question.IsDeleted]"> 
     </i> 
     </a> 
<li> 

Tôi đã thực hiện một dữ liệu-app-bind-html mà liên kết với một phần html bên trong nó. Điều này làm cho liên kết bị ràng buộc hai lần, điều này làm cho nó bị cháy hai lần. Để giải quyết vấn đề này, tôi chỉ đảm bảo rằng chỉ thị liên kết phần html chứ không phải toàn bộ danh sách.

+0

Điều này khiến tôi phát điên, cảm ơn người đàn ông! –

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