【问题标题】:Using empty string ("") as name for ng-app使用空字符串 ("") 作为 ng-app 的名称
【发布时间】:2015-08-10 15:50:46
【问题描述】:

我想知道为什么在 ng-app 中使用空字符串似乎是个问题。 在 w3school 提供的example 中,我尝试使用空字符串来命名 ng-app,如下所示,但失败了。

<!DOCTYPE html>
<html>
    <script src= "http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js">
    </script>
<body>

<p>Try to change the names.</p>

<div ng-app="" ng-controller="myCtrl">

    First Name: <input type="text" ng-model="firstName"><br>
    Last Name: <input type="text" ng-model="lastName"><br>
<br>
    Full Name: {{firstName + " " + lastName}}

</div>

<script>
    var app = angular.module('', []);
    app.controller('myCtrl', function($scope) {
      $scope.firstName= "John";
      $scope.lastName= "Doe";
    });
</script>

</body>
</html>

即使创建 " " 也会使 ng-app 指令起作用。有什么想法吗?

我想知道这个问题的原因是我学习了一个示例,无需初始化控制器即可实现相同的功能,并且 ng-app 是一个空字符串。

<!DOCTYPE html>
<html>
<script src= "http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js">
</script>
<body>

<div ng-app="" ng-init="firstName='John'">

<p>The name is <span ng-bind="firstName"></span></p>

</div>

</body>
</html>

【问题讨论】:

  • 你为什么要这样做?
  • @sma 我进行了编辑,添加了另一个示例。这让我想到了为什么我们做不到。

标签: javascript angularjs angularjs-directive


【解决方案1】:

您必须为您的模块设置一个名称,否则不使用模块并从您的 html 中删除“ng-app”。

【讨论】:

  • 谢谢。实际上我编辑了这个问题并添加了另一个没有实例化控制器的示例,这次 ng-app 是“”。我意识到这确实是我思考这个问题的原因。我想知道为什么我们可以在我的第二个例子中做到这一点。
  • 我的错!如果您没有模块,则不必删除 ng-app 指令。 “在文档中找到的第一个 ngApp 将用于定义根元素以自动引导为应用程序。”link to ngApp documentation。这就是为什么您的第二个示例在不引用模块的情况下工作的原因。
  • 所以如果不需要进一步定义模块,我们可以简单地将ng-app名称保留为""?
  • 是的,您可以将 ng-app 指令保留为:ng-app="" 或只是 ng-app
【解决方案2】:

一个空字符串 null。

但是一个有间隔的字符串仍然是一个字符串。

这就是你可以使用它的原因。

【讨论】:

  • 一个 spaced string 实际上使它工作,正如 OP 解释的那样。
  • 谢谢。实际上我编辑了这个问题并添加了另一个没有实例化控制器的示例,这次 ng-app 是""。我意识到这确实是我思考这个问题的原因。我想知道为什么我们可以在我的第二个例子中做到这一点。
猜你喜欢
  • 1970-01-01
  • 2011-07-13
  • 1970-01-01
  • 2015-09-17
  • 2019-08-20
  • 2018-04-24
  • 1970-01-01
  • 1970-01-01
  • 2011-09-05
相关资源
最近更新 更多