Javascript 是否在第页执行函数?
我有如下递归函数:Javascript 是否在第页执行函数?,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我有如下递归函数: scope.$watch('settings.egg', function () { var index = 0; function inOrder() { setTimeout(function () { $(".egg").eq(index).removeClass("maximize")
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();
})
我的函数在加载页上执行,但我不希望这样。
我只想工作点击按钮,而不是在加载页面。
我该怎么办?
请..为什么不设置一个绑定到您的按钮上的函数,然后在其中设置您的函数?例如:
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();
})
}
您可以将其存储在一个scope变量中,以便稍后可以从另一个函数轻松调用它以取消$watch。在您的标记中:
<button ng-click="buttonClick()">Click me to set the watch</button>
单击我设置手表
不确定是否足够清楚-此函数监视“settings.egg”的更改-一旦“settings.egg”更改(不是启动时),将执行回调。我必须使用ng模型。这可能是另一种解决办法吗@Xaniff@eagle如果你能详细说明这些因素是如何影响你的问题的,以及为什么你被限制使用这些因素,那会很有帮助。如果您将其直接放在控制器中,$watch将在所述控制器实例化时设置,并在指定模型更改时执行回调。如果您不想设置它,请不要设置它,直到您想设置它,并且我的解决方案提供了该触发器。