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

AngularJS:如何在角度应用程序中嵌套应用程序

罗安宁
2023-03-14
问题内容

我一直在从事一个更像框架的项目,并且可以安装几个应用程序/模块。像基本的应用商店或google.play商店一样看到它。这是一个Intranet应用程序,所有模块都可以添加到您的用户帐户中。

该框架已经在开发中,但是我现在正在围绕应用程序/模块的想法。(链接到开发中的概念证明,可以在这里找到)

一个应用程序应该是独立的,并且不能突然包含框架中的脚本,这可以通过在单独的模块中进行结构化来实现,如下所示:

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

但是,一个应用程序可以具有模板,脚本,css,并且可以在单独的服务器上运行,因此我正在寻找一种最佳方法来获取脚本和cssfile并将其动态加载到应用程序中当用户app从框架内启动时。

  • 当前,我正在构建应用程序,就好像它们具有主模板一样,例如www.framework.com/apps/myapp/views/app.html,为了简化起见,我将每个应用程序的脚本捆绑到1个脚本文件中,因此也要www.framework.com/apps/myapp/script.js包含一个。

该框架包含一个可加载应用程序的模板和一个appController。模板包含以下内容:

<div data-ng-controller="AppController" data-ng-include="app.appTemplate">
    <div>loading...</div>
</div>

它基本上与$scope.app.appTemplate加载所有脚本时更新的绑定,因此首先显示一个加载模板,然后在页面中包含脚本后,将其更新为app.appTemplate应用程序的上述主模板。

在加载第一个索引模板时,该模板当前AppController已从框架中加载,因此它使用的$scope是框架的,而不是它自己的脚本。

我仍然必须以某种方式启动应用程序自己的angular模块,并让它自己运行,而无需在框架中运行任何东西以使其“正常运行”

我仍然在想如何最好地加载依赖的javascript文件(可能会使用requrejs或其他依赖加载器),但是我目前不知道如何在不从框架的内部工作的情况下“启动”应用程序
AppController

编辑

我创建了一个小型演示项目来展示手头的问题,当该项目进行一些硬编码时,可以在git-
hub
上看到完整的代码,这样的想法是当我得到证明时,对那些硬编码进行编码正确的概念,现在所有关于在框架内加载应用程序。如果可能的话,我可以考虑从哪里获取URL和应用程序名称。


问题答案:

您不能将一个模块引导到另一个自举模块中。引导编译会编译视图并将其绑定到rootScope,在DOM中遍历视图,并设置作用域绑定并始终执行指令链接功能。如果您重复两次,将会遇到问题。

您可能必须重新考虑您的体系结构。我认为也许与Angular有关的“模块”或“应用”一词用词不当,并且会带您走错路。

应用程序中的每个“用户安装的应用程序”可能实际上应该由您的应用程序模块中的控制器控制,或注册到您的应用程序模块引用的模块中。因此,您不会“启动多个应用程序”,实际上只是启动一个,引用其他模块,然后使用这些模块中的控制器来控制屏幕上部分视图。

您要做的是在安装新的“小部件”后,在系统中注册其模块文件(.js),其中将包含一个名为WidgetCtrl的控制器,然后在加载页面时,您将引用该小部件的应用模块上的模块。从那里应该可以使用ng-
controller和/或ng-include动态分配给元素。

我希望这是有道理的。



 类似资料:
  • 问题内容: 我尝试使用angular-ui,并尝试注入$ stateProvider: html js(test / appModule.js) 堆栈跟踪 如果我删除带有注释的 $ stateProvider 和 ui.router ,那么一切都会起作用: 那么注入 $ stateProvider 的问题有解决的任何想法吗? PS 我尝试了ui示例,它可以工作,但是我无法弄清楚为什么我的不行。 问

  • 问题内容: 我正在将现有的应用程序移植到Flux,并且对一个主题有些困惑。假设我有几个API端点,它们返回两级或三级嵌套对象。 例如,可能返回架构的JSON响应 如您所见,有各种各样的用户处于不同的嵌套级别: 如果我想在获取文章时随时使用新数据进行更新,则必须编写一个怪异的方法来检查文章API响应上的所有嵌套实体。而且,将存在很多重复,因为还有其他API端点具有不同的架构,有时文章嵌入在用户内部(

  • 返回到Angular中的上一页相当简单: 这相当于点击浏览器的“后退”按钮。但是,如何修改此代码,使其符合以下条件_地方back()会将您带到应用程序外部的url,它会将您重定向到应用程序内部的路由。 例如,假设你在谷歌。com,然后粘贴到我的应用程序中。com/page foo,然后朝那个方向导航<代码>此_地方back()将带您返回谷歌。com,但我希望它导航到我的应用程序。com/页面栏。

  • 问题内容: 我需要能够动态加载/卸载角度应用程序而不会引起内存泄漏。在jQuery中,您可以执行相应的销毁代码,事件处理程序未绑定等。 我一直无法在有角度的文档中找到任何内容,提及启动应用程序后可能会拆除应用程序的可能性。 我的第一次尝试是像这样破坏rootScope: 但这似乎不起作用,而且我不确定即使清除了注入器和服务也将如何清理。 应该怎么做? 问题答案: 2013年3月10日更新: 我发现

  • 问题内容: 我正在寻找一种将Google JavaScript引擎V8嵌入我的Java应用程序中的解决方案。 你有解决办法吗? 问题答案: 您可以使用J2V8 https://github.com/eclipsesource/J2V8。它甚至可以在Maven Central中使用 。 以下是您好,世界!使用J2V8的程序。 您将需要在pom.xml中指定平台。J2V8当前支持win32_x86,m

  • 我一直试图显示pdf文件,我从一个响应中得到一个blob。pdf必须使用