6

質問を削除するためのボタンがあります:

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

ボタンを押すと、関数が 2 回起動されていることに気付きました。最初に質問を削除し、2 回目にそのアクションを元に戻します。

私が欲しかったのは、質問を削除するための 1 つのボタンでした。もう一度クリックすると、そのアクションが取り消されます。

何を見落としていたのか気になります…

EDITここにフィドルがあります: http://jsfiddle.net/rquackenbush/AbWKs/

4

1 に答える 1

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パーツをバインドするdata-app-bind-htmlを作成しました。これにより、リンクが 2 回バインドされ、リンクも 2 回起動しました。これを解決するために、ディレクティブがリストアイテム全体ではなくhtml部分をバインドするようにしました。

于 2013-05-02T07:18:06.603 に答える