【问题标题】:How to display json object stored in MySQL with AngularJS如何使用 AngularJS 显示存储在 MySQL 中的 json 对象
【发布时间】:2016-02-02 11:17:17
【问题描述】:

在我的 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”表达式 指定唯一键。中继器:singletask.depencies 中的 (key, val), 重复键:字符串::,重复值::

如果我添加track by $index,它将显示用空格分隔的完整 json 字符串...

有谁知道问题出在哪里?

编辑

我从对象数组中提取 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'}]"
}

【问题讨论】:

    标签: php mysql json angularjs


    【解决方案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" 时,它将遍历数组对象。

    【讨论】:

    • 我也很关心这个......但问题是我的 json 在对象内......所以我需要在模板内转换那个 json 字符串......
    • 所以,你的意思是你得到了一个 JavaScript 对象,但它类似于 {'data': [{id:1,name:"VEZAN ZA PROJEKT 1"} , {id:1, name:'VEZAN ZA PROJEKAT 2'}]}?如果可以的话,请发布更多关于你得到什么以及你期望什么的信息。
    • 我更新了主帖....我得到了一个对象数组,我在 angular 模板中为每个对象获取它们...但我还需要在其中再创建一个 foreach 来获取所有@ 987654324@ 和 depencies 是 json 字符串...我希望显示每个 depency 名称,,,
    • 查看我编辑的答案。告诉我进展如何。
    • foreach 会减慢代码执行速度 有没有过滤器可以直接在模板中做到这一点?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-21
    • 2019-10-30
    • 1970-01-01
    • 2017-09-16
    相关资源
    最近更新 更多