当前位置: 首页 > 面试题库 >

为什么我的Angular服务中需要`$ rootScope。$ apply()`?

冯通
2023-03-14
问题内容

我的应用程序中有一个弹出模式服务,名为Overlay。它只是在上翻转了一些布尔值,$rootScope从而导致2条指令正确显示/隐藏。这是显示新模态时调用的函数

 overlay.NewGears = {
        show: function(msg){
            _displayBackground();

            scope.message = msg;
            scope.feedback = null;
            scope.url = '/partials/Common/gears.html';

            $rootScope.$apply(function(){
                $rootScope.modalVisible = true;
            });


        },
        hide: function(){
            _hideBackground();

            $rootScope.modalVisible = false;
        }
    };

如您所见,我显示不透明的背景,然后设置了一个名为的变量,该变量scope随后通过DI传递到我的指令中。但是后来我注意到我的模态没有出现在适当的时候,而是在modalVisible变量设置为true
之后出现在NEXT摘要循环中。然后,我必须添加$apply()作业周围的内容才能使其正常工作。但是,我认为仅当我们在“
Angular世界”之外时才需要这样做,那么为什么在我的Angular Service中需要它?


问题答案:

$apply告诉angular示波器发生了变化是很有必要的。内置指令和服务可以在内部执行ngClick$http执行。如果您对范围应用(很简单!)更改并且不使用上述内置服务,则您有责任给$apply自己打电话。

因此,例如,如果show未在ngClick处理程序中调用,那么您需要调用$apply自己。



 类似资料:
  • 本文向大家介绍为什么我们需要微服务容器?相关面试题,主要包含被问及为什么我们需要微服务容器?时的应答技巧和注意事项,需要的朋友参考一下 要管理基于微服务的应用程序,容器是最简单的选择。它帮助用户单独部署和开发。您还可以使用Docker将微服务封装到容器的镜像中。没有任何额外的依赖或工作,微服务可以使用这些元素。

  • 问题内容: 我只是从Angular开始。阅读Google文档中的服务示例,我只是想知道为什么您会选择使用服务而不是将变量和函数正确地保留在控制器中? 在这种情况下,您何时选择使用服务? 问题答案: 我认为主要原因是: 在控制器之间持久并共享数据。 IE:您创建了一个从数据库中获取数据的服务,如果将其存储在控制器中,一旦更改为另一个控制器,数据将被丢弃(除非您将其存储在$ rootScope中,但这

  • 服务网格的主要特征是 < li >服务发现 < li >配置管理 两者都是由Kubernetes提供的。< br >那我们为什么需要服务网格呢? *我知道对于更复杂的任务,例如分区、安全、复杂的负载平衡和路由,服务网格是正确的工具。

  • 我有一个带有的spring boot应用程序。 我还使用并在其中扩展。 当我尝试@AutoWired我拥有的服务时: 原因:org.springframework.beans.factory.noSuchBeanDefinitionException:没有“com.api.core.service.countryService”类型的合格bean可用:应至少有一个合格的自动候选bean。依赖项注释

  • 问题内容: 我有一个称为“播放器”的服务,并且在Flash对象完成加载后需要更新该服务。 我知道如何使用 但是当我需要更新模块中已经创建的实例时,它将返回“玩家”的新实例。有没有办法做到这一点?我只想要播放器的一个实例,但是我需要从外部javascript对其进行初始化。 问题答案: 好吧,我真的看不到您正在做的所有事情,但是您大概只有1/2处。 这是我要描述的工作总结 应该返回与应用程序中的服务