AngularJS - 没有名字的应用程序

时间:2016-04-22 15:31:15

标签: javascript angularjs

这让我想起了一首老歌:

“您看到我一直在阅读没有名字的应用示例......”

我最好停下来,否则我会听到Neil Young律师的来信。

我正在研究W3Schools上的AngularJS,在他们的一些例子中,ng-app属性是一个空字符串。在其他人中,它有一个应用程序的名称。似乎没有名称时,客户端脚本中也没有定义控制器功能,应用程序会自动从HTML连接。但是在这些示例中,如果我在ng-app标签中输入名称,则会破坏页面。因此提出了两个问题:

1 - 将ng-app标签与名称和带有空字符串的标签有什么区别?没有名字意味着没有定义控制器功能吗?

2 - 拥有一个没有名字的ng-app是不是很糟糕?我应该总是命名我的ng-app并用控制器功能加载吗?

“......从雨中出来感觉很好。”

编辑:查看替代问题“使用没有值的ng-app”,它是类似的,但它没有直接解决我的问题。它问:如何使用没有值的ng-app。我要求有人解释:使用ng-app与值和没有值有什么区别。

3 个答案:

答案 0 :(得分:1)

  

您可以指定AngularJS模块作为应用程序的根模块。当应用程序被引导时,该模块将被加载到$ injector中。它应该包含所需的应用程序代码,或者依赖于包含代码的其他模块。有关更多信息,请参阅angular.module。

https://docs.angularjs.org/api/ng/directive/ngApp

有人已经问过这个问题

Using ng-app without a value

答案 1 :(得分:1)

虽然空ng-app并不完全'不正确',但不推荐使用它,即使是稍微复杂的应用也无法使用。把它想象成一种快速展示鞭子的方法。

如果没有指定ng-app,它只表示没有模块可以分配控制器(以及你想要的任何其他东西),但正如你所看到它仍然可以工作......暂时

答案 2 :(得分:1)

这里有几点:

  1. 推荐official docs,因为作者是最了解框架的人。

  2. bootstrap the angular apps有两种方式:自动和手动方式 当您使用ng-app="appName"时,angularjs会自动找到带有“ng-app”标签的元素并初始化该应用程序。

    当你忽略ng-app时,你需要自己引导应用程序:

  3. angular.element(document).ready(function() {
      angular.bootstrap(document, ['myApp']);
    });
    
    1. 建议始终使用手动或自动启动应用程序。
    2. === EDIT ===

      更清楚:

      1. @ Animal2给出的stackoverflow link有很好的解释。简而言之,在角度版本1.3之前,您可以使用ng-app作为DOM元素属性而没有任何值,因为angularjs将为您处理其他所有事情
      2. <div ng-app>
            ....
        </div>
        

        但在1.3版之后,不建议使用此语法。相反,您可以使用前面提到的“自动”方式和“手动”方式。