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

Angular使用根范围与服务共享数据

锺离辰沛
2023-03-14
问题内容

我一直在读wrox角书。在书中,作者描述了一种在控制器之间共享数据的方法是:

  1. 在根范围上具有属性
  2. 在根范围上更新该属性
  3. 广播属性已更新的事实
  4. 所有需要了解的儿童范围,都会收听广播。

与在Service上公开对象和让angular的两种方式进行数据绑定做所有繁重的工作相反。为什么有人会采用“根范围发布/订阅”方法,而不是在服务上公开对象?


问题答案:

这是一个有趣的问题。

首先,我们应该考虑各个级别的差异:

  • 范围

    • 如果$rootScope我们在全局范围内定义变量
    • 如果是共享服务,我们可以将该服务注入真正使用此值的控制器
    • 可扩展性

    • $rootScope -我们具有有限的选项来添加其他逻辑以对该值进行操作(我们可以定义另一个全局函数)

    • 共享服务-我们可以自由定义任何类型的逻辑
    • 封装形式

    • $rootScope -$ rootScope中定义的所有对象将在所有模块中可见

    • 共享服务-我们可以决定什么是可见的,什么不是
    • 模块化

    • $rootScope -全局变量不在模块空间中

    • 共享服务-服务是应用程序的单独模块
    • 保养中

    • $rootScope-很难找到哪些组件使用了我们的$rootScope变量。

    • 共享服务-我们可以看到我们使用的服务,也可以找到我们使用该服务的组件
    • 捆绑

    • $rootScope -在多个控制器中的一个变量中设置双向绑定很容易 $rootScope

    • 共享服务-启用双向绑定可能很棘手

在我看来,这仅对创建真正的全局变量有用。



 类似资料:
  • 本章内容来自openresty讨论组 这里 先看两段代码: -- index.lua local uri_args = ngx.req.get_uri_args() local mo = require('mo') mo.args = uri_args -- mo.lua local showJs = function(callback, data) local cjson = requ

  • 问题内容: 我最近开始使用AngularJS,现在构建应用的方式是这样的: MainController.js SomeController.js Im遇到的问题是范围未在模块之间共享。例如,无法从 MainController 获得变量“ test”。 最佳做法是什么?是否将所有控制器都以1个文件存储在1个模块中? 我如何能有1个页面和2个控制器并在它们之间共享,还是可以将所有内容仅放在一个控制

  • 问题内容: 我想在控制器之间“绑定更改”异步数据。 我知道这可能有点令人困惑,但我希望有可能。 在以下示例中,如果我在输入中编写内容,则效果很好:http : //jsfiddle.net/Victa/9NRS9/ HTML : JS : 但是,假设我从服务器获取数据。我想像前面的示例一样“链接”数据。http://jsfiddle.net/Victa/j3KJj/ 事实是,我想避免使用“ $ b

  • 问题内容: 首先,我想说两件事。首先,很抱歉,如果已经有人问过这个问题,我已经搜索了与此主题相关的类似问题,但找不到解决方案。其次,对于冗长的问题,我们深表歉意,如有任何错误,请通知我,我将确保做出适当的更改:)。 我是Android开发的新手(大约2个月),所以请原谅我的无知。我有关于Android服务的问题。 我的问题如下,我创建了以下3个应用程序: 一个包含小型测试服务( myService

  • 问题内容: 有没有办法在AngularJS中的服务之间共享数据? 用例:来自不同服务的数据聚合 例如,我想要一个service1从REST服务加载一些数据。然后,另一个service2将来自另一个REST API的其他数据添加到service1数据中,以创建数据聚合服务。 我基本上是想根据它们使用的API来分离服务,但是仍然有一个服务来最终保存所有数据。 问题答案: 创建使用延迟库的第三项服务,以

  • 我正在设计一个微服务架构中的评审分析平台。 应用程序如下所示; null null 问题在于,验证服务需要获取site-a的所有评论,应用验证规则并生成错误(如果有的话)。我知道共享数据库模式和实体打破了微服务体系结构。 一个可能的解决方案是 每当验证服务需要对站点进行审查时,它就会请求网关,网关会将请求重定向到审查服务并采取响应。 这种方法的两个可能缺点是 验证服务是否知道网关?是否会带来依赖?