2013-04-29 88 views
6

我有這是我們用來刪除問題按鈕:爲什麼ng-click處理程序被激發兩次?

<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> 

這是按鈕後面的代碼:

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

現在,當我按我注意到了功能按鈕已被解僱兩次。 第一次刪除問題時,第二次解除了該操作。

我想要的是一個按鈕來刪除一個問題,當你再次點擊它時,它將撤消該操作。

我只是想知道我忽略...

編輯這裏是一個小提琴: http://jsfiddle.net/rquackenbush/AbWKs/

+2

你可以分享小提琴 – 2013-04-29 10:56:03

+0

如果你添加一個'href =「#」'你的鏈接嗎? (這只是一個瘋狂的猜測。) – TheHippo 2013-04-29 12:06:20

+1

我分享了一個複製此行爲的小提琴 – RQDQ 2013-04-29 17:39:18

回答

5

我發現了什麼問題了。

的鏈接是一個列表裏:

<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> 

我已經做了一個數據,應用程序綁定HTML的結合在它裏面一個HTML部分。這導致鏈接被綁定了兩次,這也導致了它的兩次啓動。 爲了解決這個問題,我只是確保該指令綁定了html部分而不是整個listitem。

+0

這讓我瘋狂,謝謝你! – 2015-04-23 00:21:50

相關問題