ng-repeat angularjs 1.5.11 不工作

ng-repeat angularjs 1.5.11 not work

我有一个 angularJS v1.5.11 应用程序, 但是当我想在 table 中做一个简单的 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 和更高版本上不起作用..

此致, 阿克塞尔.

您需要告诉 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.1.1,因为我只有 1.4.x+ 的经验,但您需要使用模块控制器注入。

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

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

然后给你的 ng-app 起个名字(我用的是 app