выполнять функцию на странице или нет?

0

У меня есть рекурсивная функция:

scope.$watch('settings.egg', function () {
                    var index = 0;
                    function inOrder() {
                        setTimeout(function () {
                            $(".egg").eq(index).removeClass("maximize")
                            $(".egg").eq(index + 1).addClass("maximize")
                            index++;
                            inOrder();
                        }, 3000)
                    };
                    $(".egg").eq(index).addClass("maximize")
                    inOrder();
                })

Моя функция выполняется на странице загрузки, но я этого не хочу. Я просто хочу нажимать на кнопку не на странице загрузки. Как я могу сделать? Пожалуйста..

  • 0
    Нет уверенности, что это достаточно ясно - эта функция отслеживает изменения в файле «settings.egg» - обратный вызов будет выполнен после того, как будет изменен «settings.egg» (не при запуске).

1 ответ

0
Лучший ответ

Почему бы не настроить функцию, которая привязана к ng-клику вашей кнопки, и установить в ней свою функцию? Например:

scope.buttonClick = function() {
  scope.watchFunc = scope.$watch('settings.egg', function () {
                    var index = 0;
                    function inOrder() {
                        setTimeout(function () {
                            $(".egg").eq(index).removeClass("maximize")
                            $(".egg").eq(index + 1).addClass("maximize")
                            index++;
                            inOrder();
                        }, 3000)
                    };
                    $(".egg").eq(index).addClass("maximize")
                    inOrder();
                })
}

Вы сохранили бы это в переменной области, чтобы вы могли легко вызвать ее из другой функции позже, чтобы отменить $ watch. И в вашей разметке:

<button ng-click="buttonClick()">Click me to set the watch</button>
  • 0
    Я должен использовать нг-модель. Это может быть другое решение? @Xaniff
  • 0
    @eagle Было бы полезно, если бы вы могли уточнить, как это влияет на ваш вопрос, а также почему вы ограничены в использовании этого. Если вы поместите это непосредственно в контроллер, $ watch будет установлен при создании экземпляра контроллера и будет выполнять обратный вызов при изменении указанной модели. Если вы не хотите, чтобы он был установлен, не устанавливайте его, пока не захотите, и мое решение предоставляет этот триггер.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню