应用程序工作但其中的第一个控制器失败

时间:2015-11-16 13:18:36

标签: javascript angularjs scope

我在我的应用程序中设置了一个控制器(松散地跟随a guide)。第一个div按预期运行 - 第一个显示文本而另一个显示为空。但是, ContraAss 控制器似乎不会呈现,只显示 {{info}} 。我错过了什么愚蠢的事情? (注意:我确定它是基本的东西,但由于缺乏经验和对智力感觉不太好的一般刺激,我没有想法如何继续。)

XML

<body>
  <div ng-app="ApplicationHolder">
    <div>Uno: "{{holderUno}}"</div>
    <div>Duo: "{{holderDuo}}"</div>
    <div ng-controller="ContraAss">{{info}}</div>
  </div>
</body>

JS

var application = angular.module("ApplicationHolder", []);

application.run(function ($rootScope) {
  $rootScope.holderUno = "Blipp";
});

application.controller("ContrAss", function($scope) {
  $scope.info = "This is an info carrier";
});

输出

  

Uno:&#34; Blipp&#34;
  Duo:&#34;&#34;
  {{信息}}

首先我认为我可能会以不正确的方式发送范围,但后来我意识到它会被渲染为空字符串,类似于 HolderDuo 。所以现在,我倾向于怀疑控制器根本没有被识别为控制器。

我该如何处理?

2 个答案:

答案 0 :(得分:1)

ContraAssContrAss的评论中更新了@ Starscream1984建议的控制器名称(并将应用名称更改为myApp):

HTML:

<body>
  <div ng-app="myApp">
    <div>Uno: "{{holderUno}}"</div>
    <div>Duo: "{{holderDuo}}"</div>
    <div ng-controller="ContrAss">{{info}}</div>
  </div>
</body>

JS:

var myApp = angular.module("myApp", []);

myApp.run(function ($rootScope) {
  $rootScope.holderUno = "Blipp";
});

myApp.controller("ContrAss", function($scope) {
  $scope.info = "This is an info carrier";
});

JSfiddle:http://jsfiddle.net/ghorg12110/HB7LU/19922/

答案 1 :(得分:1)

HTML和JS中的控制器名称之间存在不匹配(拼写错误)。

HTML正在寻找名为ContraAss的控制器,但在您的JavaScript中,您已将其定义为ContrAss。因此,没有控制器存在,它会向控制台抛出一个错误(这是一个很好的第一个检查,无论何时你不理解JavaScript正在做什么)。

将您的控制器定义更改为:

myApp.controller("ContraAss", function($scope) {
  $scope.info = "This is an info carrier";
});
相关问题