ng-repeat angularjs 1.5.11不起作用

时间:2017-06-28 15:37:00

标签: javascript angularjs loops angularjs-ng-repeat jsfiddle

我有一个 angularJS v1.5.11 应用, 但是当我想在表格中进行简单的ng-repeat时,我遇到了很大的问题,比如

<tbody>
 <tr ng-repeat="score in data.result"> 
    <td ng-repeat="item in score"> {{ item }} </td>
 </tr>
</tbody>

我的代码在 angularJS v1.1.1 上运行正常, 希望您能够帮助我。 我在这里做了一个JSFiddle:https://jsfiddle.net/vpLj20w1/5/ 你可以在JSFiddle中更改AngularJS框架版本,以便在1.1.1上看到工作正常,但是在1.4.8及更高版本上没有工作..

最好的问候, 阿克塞尔。

2 个答案:

答案 0 :(得分:2)

您需要告诉angularjs您的控制器是否存在。尝试声明模块并将控制器添加到模块:

<div ng-app="myApp">
  <div ng-controller="scoreCtrl">
  ...
  </div>
</div>

然后添加到您的javascript:

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

现在它运行得比它好,但是你有ng-repeat="item in score"的问题,因为angularjs需要一个唯一的键用于ng-repeat中使用的任何东西,你有重复的项目。

将内循环更改为:

<td ng-repeat="item in score track by $index"> {{ item }} </td>

现在你应该得到预期的输出。

顺便说一句,看看浏览器中的javascript控制台会帮助你:最初它抱怨它无法找到控制器功能,然后当我将它注入应用程序时,它抱怨转发器。

答案 1 :(得分:0)

这是因为您尚未将控制器注入应用程序。我无法解释为什么你的例子适用于1.1.1,因为我只有1.4.x +的经验,但你需要使用模块控制器注入。

https://jsfiddle.net/vpLj20w1/7/

angular.module('app', [])
  .controller('scoreCtrl', scoreCtrl);

并为您的ng-app命名(我使用了app