gpt4 book ai didi

javascript - 为什么 Angular UI Bootstrap 使用提供程序来处理模式和工具提示中的逻辑,而不是其他组件中的逻辑?

转载 作者:行者123 更新时间:2023-12-02 16:59:49 25 4
gpt4 key购买 nike

我注意到 Angular UI Bootstrap 使用 Provider 来处理 Modal 和 Tooltip 组件的所有逻辑,但所有其他组件的逻辑都设置在由指令及其子指令共享的单个 Controller 内.

那么仅对这两个组件使用 Provider 而不是 Controller 有什么好处?

另外,为什么组件接受选项作为在链接函数中读取和解析的数据属性,而不是使用指令范围来接受选项?

最佳答案

  1. 提供商与控制者:

如果你看看modal.js的第349行和第350行:

//merge and clean up options
modalOptions = angular.extend({}, $modalProvider.options, modalOptions);

您将看到模式指定的选项与用户指定的选项合并,允许后者覆盖前者。这样做大概是为了在配置时您可以在提供程序中设置默认值,然后再设置它们。提供程序用于在开始时配置您的应用程序。我假设其他组件没有应用程序级配置,因此不需要提供程序(并且可以使用 factory 或仅使用 directive 等)。

  • 使用 scope: {/* ... */} 与在指令中不这样做
  • 如果你看一下我选择的随机文件,如 buttons.js你会看到选项的解析方式与第 22 行类似:

    scope.$eval(attrs.btnRadio))

    这样做的一个原因是,一般来说,您不会创建隔离作用域 - 创建隔离作用域可能意味着您不能在同一元素上拥有另一个 new-ed 或隔离作用域- 因此请谨慎使用它们 - 这也意味着内部内容无法访问外部的作用域变量(对于 ngTransclude 很有用)。如果我只需要来自外部世界的一个值,并且可以将其粘贴到作为我的指令名称的属性上,那么我几乎总是只是 $observe$eval$interpolate 它而不是创建隔离范围。

    关于javascript - 为什么 Angular UI Bootstrap 使用提供程序来处理模式和工具提示中的逻辑,而不是其他组件中的逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25839362/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com