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

为什么即使我在JSFiddle中声明ng-app =“ MyApp”,我也需要angular.bootstrap

麹繁
2023-03-14
问题内容

我并没有真正理解为什么angular.bootsrap document, ['MyApp']在我的CoffeeScript代码末尾需要执行以下操作来管理以下测试应用程序中的模块和控制器的原因:

这是HTML:

<div ng-app='InventoryModule' ng-controller='InventoryController'>
    <ul ng-repeat='item in items'>
        <li>{{item.title}}</li>
        <li>{{item.price | currency}}</li>
    </ul>
</div>

和CoffeeScript:

inventoryModule = angular.module 'InventoryModule', []

inventoryModule.factory 'Items', ->
    items = {}
    items.query = () -> [{title: 'Hello', price: '5'}]
    items

inventoryModule.controller 'InventoryController', ($scope, Items) ->
    $scope.items = Items.query()

angular.bootstrap document, ["InventoryModule"]

如果删除最后一行,则应用程序将无法正常工作。这是为什么?这在其他任何地方都没有得到真正的解释。

这是代码的小提琴:http :
//jsfiddle.net/dralexmv/8km8x/11/

如您所见,该应用程序实际上可以正常工作。如果将bootstrap其卸下,它将停止工作。


问题答案:

l

将jsFiddle中的第二个下拉菜单设置为 “ No wrap-in ”,您将不需要angular.bootstrap行。

小提琴

说明

加载Angular库后,它将扫描DOM以查找带有ng-app指令的元素。当找到一个时,它将开始引导过程。

在该过程中,Angular将采用ng-
app属性的值(在您的情况下为InventoryModule),并将尝试查找具有相同名称的angular模块。如果失败,它将抛出:Uncaught Error: No module: <module name>

在您的小提琴中,您已将“代码环绕”选择框设置为“ onLoad”。此下拉菜单指示jsFiddle何时初始化放置在JS框架中的JS代码。设置为“
onLoad”时,代码将在onLoad窗口事件中运行。

另一方面,Angular引导过程将在上运行$(document).ready(),并且由于$().ready在“
onLoad”事件之前触发了该事件,因此Angular会尝试InventoryModule在模块定义之前就初始化模块,这"No module"将引发可怕的错误。

angular.bootstrap()是手动完成Angular在$().ready()处理程序中已经做过的事情的方式。



 类似资料:
  • 问题内容: 为什么编译器没有在开关中的每个代码块之后自动放置break语句?是出于历史原因吗?您何时要执行多个代码块? 问题答案: 有时将多个案例与同一代码块关联会很有帮助,例如 等。只是一个例子。 以我的经验,通常“摔倒”并在一种情况下执行多个代码块是不好的风格,但是在某些情况下可能会有用处。

  • 问题内容: Angular应用使用属性而不是事件。 为什么是这样? 问题答案: ng-click包含一个角度表达式。Angular表达式是在Angular 范围的上下文中求值的,该范围绑定到具有ng- click属性的元素或该元素的祖先。 Angular表达式语言不包含流控制语句,也不能声明变量或定义函数。这些限制意味着模板只能访问由控制器或指令提供的变量和运行功能。

  • 问题内容: 我想用主方法创建一个简单的Java类,但是在编译代码时,出现以下错误消息: 错误:在类error.TestErrors中找不到主方法,请将主方法定义为:public static void main(String [] args) 这是源代码: 为什么我看到此错误,如您所见,我已经声明了main方法! 问题答案: 正如我在评论中所说,您似乎已经在自己的类中声明了一个类。为了证明这一点,

  • 问题内容: 我将稍微解释一下我的脚本,以便您可以理解我的问题。 基本上我做了一个脚本来检查SOCKS5是还是。 当我在上面测试我的脚本时,它运行良好,但是当我在Windows上对其进行测试时,直到我将以下行添加到: 谁能向我解释为什么我在Windows中需要此行,而在Linux服务器上却不需要? 问题答案: SSL证书上的此cURL手册页介绍了连接到SSL / TLS受保护主机时 证书验证 的过程

  • 我在互联网上找到了例子,但这并没有给我充分的理解。使用WebFlux时的标准CRUD。 路由器: 处理程序: 我是对的还是这个说法错了?

  • 问题内容: Java7的try-with-resources非常好,但是我无法绕开为什么需要在语句中包括资源声明的问题。我的直觉说以下应该是可能的: las,这会导致语法错误(含糊地期待a )。将类型定义/声明移动到语句中是可行的,这当然会将事物移动到相应的范围内。当我想从封闭中获得更多收益时,我可以弄清楚该如何解决,我对 为什么 编译器需要这样的东西很感兴趣。 问题答案: 您的版本未明确定义应关