Javascript 永远不会调用回调
我尽可能多地阅读了有关$digest cycle和$scope.$apply()的文章,但没有谈到如何更改回调上的数据 这是我的方法:Javascript 永远不会调用回调,javascript,angularjs,Javascript,Angularjs,我尽可能多地阅读了有关$digest cycle和$scope.$apply()的文章,但没有谈到如何更改回调上的数据 这是我的方法: vm.showAllResults = showAllResults; function showAllResults(){ // Prevent 'bubbling' event.preventDefault(); event.stopPropagation();
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;塞尔吉乌·帕拉奇夫。对是的。你为什么不使用承诺?