【发布时间】:2017-08-21 19:16:39
【问题描述】:
我可能在这里遗漏了一些明显的东西,但我认为这应该简单地循环通过我提供的 JSON。但是,我收到 ngRepeat:dupes 错误,提示 uid 未定义。如果我不按 ID 跟踪,我会收到重复错误。即使我在控制器中进行解析,该字符串似乎也没有被视为 JSON,而是一个简单的字符串。我在这里想念什么?
<tbody>
<tr ng-repeat="item in monresults track by item.uid">
<td>{{item.date}}</td>
<td>{{item.name}}</td>
<td><a href="{{item.url}}"><button type="button" class="btn btn-warning btn-sm btn-block">Play Call <i class="fa fa-volume-up" aria-hidden="true"></i></button></a></td>
</tr>
</tbody>
我的 JSON 如下所示:
[ { "uid":"2", "name":"周六 8-5", "url":"http://example.com/calls/sat-8-5-17.mp3", "cs4000id":"hea654hdf!iDk1sjPz8dsa", “日期”:“08-05-17”, “创建”:“2017-08-21 09:44:16”, “雇员”:“” }, { “uid”:“3”, "name":"周六 8-12", "url":"http://example.com/calls/sat-8-12-17.mp3", "cs4000id":"5PR$NTuMbFq8x!k1sjPz86Nk", “日期”:“08-12-17”, “创建”:“2017-08-21 09:45:06”, “雇员”:“” } ]这是我的 CTRL 中的 monresults,我正在记录结果以确保它看起来正确:
Data.get('moncall').then(function (results) {
$scope.monresults = JSON.parse(results);
console.log($scope.monresults);
});
【问题讨论】:
-
当您手动将
$scope.monresults设置为您发布的数据时,代码是否有效? -
为什么不使用
track by $index? -
如果我“按 $index 跟踪”,我的视图会像数组的每个字符一样重复。 (您会注意到我的 JSON 是数组中的对象)。它会给我一个 50+ 空行。很奇怪。
-
好的,@nadavvadan 我将 $scope 直接设置为 Json,一切正常。关于为什么我的
JSON.parse(results);在登录到控制台或只是打印到屏幕时通过眼睛测试看起来不错的任何想法。虽然不被视为实际的 JSON 对象? -
你一直在混淆
JSON,这是一个包含类似JS-Object结构的String,以及实际的JSobjects,它们是一个单独的数据类型。您的问题可能源于代码的异步性质;它是说uid is not defined还是类似cannot get property uid of undefined的东西?
标签: javascript angularjs json angularjs-ng-repeat