Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.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_Angularjs - Fatal编程技术网

Javascript 永远不会调用回调

Javascript 永远不会调用回调,javascript,angularjs,Javascript,Angularjs,我尽可能多地阅读了有关$digest cycle和$scope.$apply()的文章,但没有谈到如何更改回调上的数据 这是我的方法: vm.showAllResults = showAllResults; function showAllResults(){ // Prevent 'bubbling' event.preventDefault(); event.stopPropagation();

我尽可能多地阅读了有关$digest cycle和$scope.$apply()的文章,但没有谈到如何更改回调上的数据

这是我的方法:

vm.showAllResults = showAllResults;

function showAllResults(){
            // Prevent 'bubbling'
            event.preventDefault();
            event.stopPropagation();
            // Second parameter notifies search to show full list of elements
            vm.search(vm.input.query, true);
            $scope.$apply(function(){
                vm.showAll = false;
            });
        }
vm.search(vm.input.query,true)-正在与vm.showAll进行一些async工作之后我想将其设置为false


但我无法进入$scope。$apply()。我做错了什么?谢谢

直接回答您的问题:我强烈怀疑您得到了控制台。错误:

$apply已在进行中

这会导致$apply回调不运行

也就是说,您可以通过使用而不是$scope.$apply(cb)来解决这个问题。如果要使用它,请确保插入依赖项:

vm.showAllResults=showAllResults;
函数showAllResults(){
//防止“冒泡”
event.preventDefault();
event.stopPropagation();
//第二个参数通知搜索以显示元素的完整列表
search(vm.input.query,true);
$timeout(函数(){
vm.showAll=false;
});

}
您是否遇到JavaScript错误?如果是,那是什么?是
vm.search
在做异步工作吗?嗨,不,我没有。简单地说,我从不在这一行:vm.showAll=false;塞尔吉乌·帕拉奇夫。对是的。你为什么不使用承诺?