Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否在第页执行函数?_Javascript_Jquery_Angularjs - Fatal编程技术网

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将在所述控制器实例化时设置,并在指定模型更改时执行回调。如果您不想设置它,请不要设置它,直到您想设置它,并且我的解决方案提供了该触发器。