我如何将此jQuery函数转换为AngularJS指令?

时间:2016-06-10 03:02:45

标签: javascript jquery angularjs angularjs-directive angularjs-scope

我有这个onclick="startTimer({{ $index }},{{ product.time }})"但显然原因是数据绑定没有呈现,所以我必须使用ng-click来呈现值,但是ng-click不能使用我的jQuery脚本

<script>
    function startTimer(id, time) {
        $("#" + id).next("div").removeClass("claimActive");
        $("#" + id).next("div").addClass("claimWait");
        $("#" + id).removeClass("timerActive");
        $("#" + id).addClass("timerWait");
        $("#" + id).next("div").children("a").text("WAIT");
        if (time <= 60) {
            if (time < 10) $("#" + id).children("#m").text("0" + time);
            else $("#" + id).children("#m").text(time);
            $("#" + id).children("#s").text("30");
        } else {
            if (time < 600) $("#" + id).children("#h").text("0" + time / 60);
            else $("#" + id).children("#h").text(time / 60);
            $("#" + id).children("#m").text("00");
            $("#" + id).children("#s").text("30");
        }
    }

    function checkTimers() {
        $(".timer").each(function() {
            seconds = parseInt($(this).children("#h").text()) * 3600 + parseInt($(this).children("#m").text()) * 60 + parseInt($(this).children("#s").text());
            if (seconds > 0) {
                hours = parseInt($(this).children("#h").text());
                min = parseInt($(this).children("#m").text());
                sec = parseInt($(this).children("#s").text());
                if (sec > 0) {
                    if (sec > 10) $(this).children("#s").text(sec - 1);
                    else $(this).children("#s").text("0" + (sec - 1));
                } else if (min > 0) {
                    if (min > 10) $(this).children("#m").text(min - 1);
                    else $(this).children("#m").text("0" + (min - 1));
                    $(this).children("#s").text(59);
                } else if (hours > 0) {
                    if (hours > 10) $(this).children("#h").text(hours - 1);
                    else $(this).children("#h").text("0" + (hours - 1));
                    $(this).children("#m").text(59);
                    $(this).children("#s").text(59);
                }
            } else {
                $(this).next("div").removeClass("claimWait");
                $(this).next("div").addClass("claimActive");
                $(this).addClass("timerActive");
                $(this).removeClass("timerWait");
                $(this).next("div").children("a").text("CLAIM");
            }
        });
    }
    $(document).ready(function() {
        setInterval(checkTimers, 1000);
    });
</script>

所以我需要在AngularJS指令中使用它,但我不知道如何做到这一点我已经添加到控制器中的所有内容都是

$scope.startTimer = function($index,productTime) {};

0 个答案:

没有答案