如何使用AngularJS显示存储在MySQL中的json对象

时间:2015-11-02 14:27:02

标签: php mysql json angularjs

在我的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'}]"
}

1 个答案:

答案 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"时,它会迭代数组对象。