【问题标题】:How can I execute Angular code without bootstrapping?如何在不引导的情况下执行 Angular 代码?
【发布时间】:2015-08-30 13:42:19
【问题描述】:

所有手动引导示例都使用以下模式:

angular.module('myApp', []);
angular.bootstrap(document, ['myApp']);

但是,我不需要角度来查看文档,我只需要使用 ui-bootstrap 模块打开一个弹出窗口。

我做到的最好的事情是:

$("...").click(function() {
  angular.module("pp", ["ui.bootstrap"])
  .config(["$modal", function($modal) {
    $modal.open({
      template: "Hello!"
    });
  }]);
  angular.bootstrap(null, ["pp"]);
});

但是,每次都会重新引导 angular,一遍又一遍地重新创建相同的模块,最重要的是它不起作用 - 配置与提供程序初始化一起运行,因此没有可用的 $module 依赖项时间。

基本上,我正在尝试将 Angular 融入现有应用程序,而不会对当前结构造成重大干扰。我想要 Angular 来管理单个弹出窗口,暂时没有别的,所以正常的引导和控制器方式似乎不是最好的选择。

有没有什么方法可以在不进行全局角度引导的情况下运行该模态?

【问题讨论】:

  • “我不需要 Angular 来查看文档,” - 然后不要通过document。你可以传递任何元素。

标签: javascript angularjs bootstrapping


【解决方案1】:

您是否尝试过将 Angular 引导到整个文档,并且除了模态调用之外根本不使用它?除非与您当前的代码存在命名空间冲突,否则这似乎允许您在任何地方使用 Angular 函数,而无需每次都进行引导。

【讨论】:

  • 那么我将如何使用“Angular 函数”呢?例如,我在角度上下文之外,因此我无法以通常的方式访问该 $modal 。我尝试直接使用 angular.injector() 来获取 $modal,但找不到它(我在引导时确实将 ui.bootstrap 指定为依赖项)。
  • 看起来充其量是hacky,但是当你引导时,设置一个等于inn angular modal函数的全局变量?
  • 即使我选择了这种方法——我该怎么做?我无法在 bootstrap 或 .config 中获取 $modal,因为此时提供程序尚未完全初始化。
  • 不确定,我只是想和你一起集思广益。此刻不在电脑前。
【解决方案2】:

为什么不使用没有角度包装器的 Bootstrap?

角度指令只用一些额外的东西包装原始bootstrap modals

在我看来,包含 Angular + Bootstrap + UI Bootstrap 似乎有点毫无意义,因为您可以仅使用 Bootstrap 本身实现相同的目标。

【讨论】:

    猜你喜欢
    • 2011-03-21
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    • 2019-03-23
    • 2012-08-14
    • 1970-01-01
    相关资源
    最近更新 更多