ng-click在ng-repeat ie9中多次触发

时间:2015-01-13 00:38:39

标签: javascript jquery angularjs

我有一个奇怪的怪癖似乎只发生在使用AngularJS的ie9中。

我有一个带有ng-repeat的重复按钮和一个带有ng-click的功能。单击该按钮时,该功能似乎会多次运行并在按钮之间切换。我试图删除尽可能多的冲突代码并将其削减到这些部分。

我得出结论,它只发生在add remove class if else语句中,当删除它时,它似乎工作正常。

这是我的代码:

            <div class="row multiple-question">
                    <button 
                     data-num="{{item.QuestionNo}}" 
                     class="ansbtn" data-ans="{{ answer.AnswerValue }}" 
                     ng-click="triggerNext(item.QuestionNo, answer.AnswerValue)" 
                     ng-repeat="answer in item.Answers">
                    <span class="letter num{{ $index + 1 }}"></span>
                        <h3>
                            <span class="circle right">
                                <span class="icon-checkmark"></span>
                            </span>
                        </h3>
                        <p>{{ answer.Answer }}</p>
                       <span class="arrow-right-button"></span>
                    </button>       
            </div>

功能代码在这里:

$scope.triggerNext = function(QuestionNo, AnswerValue) {
    console.log('function run');
    console.log(QuestionNo);
    console.log(AnswerValue);

    if($('.ansbtn[data-ans="'+AnswerValue+'"]').hasClass('active')) {
        $('.ansbtn[data-ans="'+AnswerValue+'"]').removeClass('active');
    } else {
        $('.ansbtn[data-num="'+QuestionNo+'"]').removeClass('active');
        $('.ansbtn[data-ans="'+AnswerValue+'"]').addClass('active');
    }
};

2 个答案:

答案 0 :(得分:0)

一种可能的解决方案可能是使用div或span元素将按钮括起来,并使其具有ng-repeat,同时保持对每个按钮的点击。

答案 1 :(得分:0)

嘿刚刚发布我的解决方案,虽然如果我坚持使用ng-click仍然存在问题,如果我将按钮点击到文档,问题就会消失,这不是我理解的正确方法。但它奏效了。