在我的MySQL数据库中,我有一个带有json字符串的列,如下所示:
[{id:1,name:"VEZAN ZA PROJEKT 1"}, {id:1, name:'VEZAN ZA PROJEKAT 2'}]
我正在尝试在模板中显示值,如下所示:
<span ng-repeat="(key, val) in singletask.depencies">
{{val}}
</span>
但是得到错误:
不允许在转发器中重复。使用'track by'表达式 指定唯一键。 Repeater:singletask.depencies中的(key,val), 重复键:string ::,Duplicate value ::
如果我添加track by $index
,它将显示用空格分隔的完整json sting ......
任何人都知道什么是问题?
修改
我从对象数组中提取JSON。这是我的对象的样子:
{
tasks : [
0 : Object
1 : Object
],
admin_id : 1,
created_at : "2015-11-02 16:16:27",
depencies : "[{id:1,name:" VEZAN ZA PROJEKT 1 "}, {id:1, name:'VEZAN ZA PROJEKAT 2'}]"
}
答案 0 :(得分:1)
您的数据将作为字符串从数据库返回,而不是作为JavaScript对象返回。要转换它,您可以使用类似https://docs.angularjs.org/api/ng/function/angular.fromJson
的内容如果您仍有问题,请发布更多代码。
编辑: 在控制器中,收到数据后,需要在任务集合上运行foreach循环(或者如果只有一个任务,只需执行一次)将字符串对象更改为JavaScript对象。
$http.get("/api/data").then(function(result){
$scope.singletask = result.data
angular.forEach($scope.singletask, function(value, key) {
value.dependencies = angular.fromJson(value.dependencies);
}
}
然后,当你转到ng-repeat="(key, val) in singletask.dependencies"
时,它会迭代数组对象。