我是angularjs的新手,我正在angular上写博客,但在我有文章列表的部分,chrome控制台会给我这个错误,列表也不见了。我在PHP中有后端,与数据库的连接似乎还可以,因为当我写一篇新文章时,数据会进入数据库,但数据似乎不会回到前端。我试着用谷歌搜索,但找不到任何有用的信息来解决这个问题。谢谢你的建议!
http://errors.angularjs.org/1.4.1/ngRepeat/dupes?p0=blog%20in%20blogs&p1=字符串%3A%3C&p2=%3C
这里是博客前端:
<table class="table table-striped">
<tr>
<th>Title</th><th>Description</th><th>Added</th><th>Remove</th>
</tr>
<tr ng-repeat="blog in blogs">
<td>{{ blog.title }}</td><td>{{ blog.description }}</td><td>{{ blog.added_date }}</td><td><button class="btn btn-danger" ng-click="removeData(blog.id)">x</button></td>
</tr>
</table>
这里是角度:
$scope.frmToggle = function() {
$('#blogForm').slideToggle();
}
$http.get('./js/popData.php')
.success(function(data) {
$scope.blogs = data;
})
.error(function(err) {
$log.error(err);
})
$scope.pushData = function($params) {
$http.post('./js/pushData.php',{'title':$params.title, 'description':$params.description})
.success(function(data) {
$scope.blogs = data;
})
.error(function(err) {
$log.error(err);
})
}
$scope.removeData = function($params) {
var cnfrm = confirm("Are you sure to delete?");
if(cnfrm) {
$http.post('./js/removeData.php', {'id':$params})
.success(function(data) {
$scope.blogs = data;
})
.error(function(err) {
$log.error(err);
})
} else {
//
}
}
这样使用:
<tr ng-repeat="blog in blogs track by $index">
<td>{{ blog.title }}</td><td>{{ blog.description }}</td><td>{{ blog.added_date }}</td><td><button class="btn btn-danger" ng-click="removeData(blog.id)">x</button></td>
</tr>
有关欺骗的详细信息,请查看AngularJs文档
我希望这对你有帮助。
从您提供的链接:
若要解决此错误,请确保集合中的项具有唯一标识或使用track by语法指定如何跟踪模型和DOM之间的关联。
上面的例子可以通过使用trackby$index来解决使项按其在数组中的位置设置关键帧,而不是它们的价值:
这可能是您的解决方案:
只需添加track by $index
。
<tr ng-repeat="blog in blogs track by $index">
</tr>
使用track by $index
或其他唯一标识符。