2013-04-29 77 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

相关问题