为什么Angular UI引导使用提供程序来处理模态和工具提示中的逻辑,而不在其他组件中
Why does Angular UI Bootstrap use a provider to handle the logic in the modal and tooltip but not in the other components?
我注意到Angular UI Bootstrap使用提供程序来处理Modal和Tooltip组件的所有逻辑,但所有其他组件的逻辑都设置在指令及其子指令共享的单个控制器内。
那么,只为这两个组件使用提供程序而不是控制器有什么好处呢?
此外,为什么组件接受选项作为在链接函数中读取和解析的数据属性,而不是使用指令范围来接受选项?
- 提供商与控制器:
如果你看看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
,而不是创建一个隔离范围。
相关文章:
- d3.js Chord图的动态工具提示
- Graphiti中是否有任何工具提示功能
- "工具提示"jQuery插件坏了
- 单元格的工具提示或标题不显示超过2000个字符
- d3.js用按钮更新条形图工具提示
- 使Intro.js工具提示响应
- 画布中绘制的矩形区域的弹出工具提示
- 使用CSS/JavaScript更改剑道图工具提示文本颜色
- 禁用NVD3 multiBarHorizontalChart中0值的工具提示
- 如何更改已显示的工具提示
- 如何访问高图表工具提示中的任何特定数据
- 如何在jQuery点击函数中添加并显示引导工具提示
- 我可以't使用jQuery更改工具提示引导程序的位置
- 语义UI中格式化的工具提示
- 柱状图上的Highcharts工具提示
- 引导工具提示用法,在搜索字段中
- 将工具提示添加到d3散点图中
- Highcharts工具提示不显示corrosconding文本值,而是显示'未定义'
- 工具提示在带有两个图表的d3.js中消失
- 为什么Angular UI引导使用提供程序来处理模态和工具提示中的逻辑,而不在其他组件中