2016-04-16 5 views
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(); 
       }) 

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

+0

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

ответ

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

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

<button ng-click="buttonClick()">Click me to set the watch</button> 
+0

Я должен использовать ng-модель. Это может быть другое решение? @Xaniff – eagle

+0

@eagle Было бы полезно, если бы вы могли объяснить, как эти факторы влияют на ваш вопрос, а также почему вы ограничены его использованием. Если вы поместите это прямо в контроллер, $ watch будет установлен, когда указанный контроллер создаст экземпляр и выполнит обратный вызов, когда указанная модель изменится. Если вы не хотите, чтобы он был установлен, не устанавливайте его, пока вы этого не хотите, и мое решение обеспечивает этот триггер. – Xaniff

Смежные вопросы