0

第二天,我开始学习 angularJS。我有点懂了

  1. 在应用程序中,ng-app 对于所有应用程序或其定义都是相同的。

  2. 一个 ng-app 可以有超过 1 个 ng-controller。

  3. 根据控制器名称,我们可以将控件移至其实现。
  4. 一个应用程序可能有多个 div 标签,每个 div 可能有不同的控制器。

从上面的理解我写了下面的示例代码来测试:

<!DOCTYPE html>
<html>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<body  ng-app="expressions" >

<div ng-controller="NGExpressionController">

<h1>This is AngularJS Expression example.......</h1>

<p>On String expression...</p>
Name: <input ng-model="name" type="text"></input></br>
Your name is {{name}}

</div>


<div ng-controller="NGExpressionControllerTwo">

<h1>This is AngularJS Expression example.......</h1>

<p>On String expression...</p>
Name: <input ng-model="adddress" type="text"></input></br>
Your name is {{address}}

</div>

<script>

    angular.module('expressions', []).controller('NGExpressionController',function($scope){
        $scope.name="Test Name";
    });


</script>

<script>

    angular.module('expressions', []).controller('NGExpressionControllerTwo',function($scope){
    $scope.address="Kolkata";   
    });
</script>

</body>
</html>

但上面的代码显示以下错误:

https://docs.angularjs.org/error/ng/areq?p0=NGExpressionController&p1=not%20a%20function,%20got%20undefined

我哪里错了?我的理解是错误的还是代码实现是错误的。任何形式的帮助都会有很大的帮助。

4

2 回答 2

1

您正在实施它两次(2 个<script>标签),这意味着他将不再识别第一个。

工作 Plnkr:https ://plnkr.co/edit/eeFddCQSBg5Lm7SOyZH0?p=preview

<script>

angular.module('expressions', []).controller('NGExpressionController',function($scope){
    $scope.name="Test Name";
}).controller('NGExpressionControllerTwo',function($scope){
$scope.address="Kolkata";   
});

然而,使用<script>加载controllers从来都不是一个好习惯,但由于这只是你第二天的学习Angular,我就这样吧:) 不管怎样,你总是可以使用https://www.codeschool.com/你会边做边学.

于 2016-04-20T12:43:12.903 回答
0

首先你的代码有一些错误,由于不正确地定义了模块,

    <script>
     angular.module('expressions',[])
      .controller('NGExpressionController',function($scope){
          $scope.name="Test Name";
      })
      .controller('NGExpressionControllerTwo',function($scope){
          $scope.address="Kolkata";   
      });
   </script>

创建应用程序时,您必须定义一次模块,并在定义模块后通过正确调用模块对象来使用该模块,以创建模块使用

   angular.module('yourModuleName',[])

再次使用该模块

 angular.module('yourModuleName')

不需要[ ],方括号,它用于定义该模块的依赖关系,放置时将导致重新初始化模块,并且您将丢失先前定义的模块属性,

1 : ng-app 指令将初始化一个 Angular 应用程序,它将可用于整个应用程序。无论如何,我们可以在单个应用程序链接中手动创建(引导)多个角度应用程序

2 :一个 ng-app 可以有多个控制器,我们可以创建我们的控制器并将它们绑定到我们想要的任何 dom 元素。

   <div ng-controller="NGExpressionController">
   {{name}}
     <div ng-controller="NGExpressionControllerTwo">
     {{address}}
     </div>
   </div>

3 :基于定义的控制器,我们可以为相应的dom元素操作我们的逻辑或函数

4 :显然是的,你也可以嵌套你的控制器以利用 $scope 继承。,一定要明智地使用它们......快乐的编码......

于 2016-04-20T12:27:41.543 回答