javascript - Angularjs - ng-repeat 不适用于单个数组?

标签 javascript angularjs arrays

我有下面的 html 代码,它对于多个数组值工作正常,但是第一次数组有单个值,那次它不起作用。

我的html代码:

    <div ng-repeat="datas in data"">
        <div class="add-pic-box1 col-md-3" ng-repeat="img in datas.Url">
            <!-- <h1>{{datas.id}}</h1> -->
            <img  class="thumb" ng-model="add_new_ads_mdl.img_add" imgid = "{{img._id}}" src="{{img.url}}" />
            <span><i class="fa fa-times" ng-click="close_img(data.url._id)"></i></span>
        </div>
    </div>

这是我尝试的 Angular 代码

$scope.data = response;

响应第一次只有一个数组对象,第一次只有它不起作用。

我第一次得到这个数组:

   [

    Mainid: "589d8761ccd6d1231e5c3882",
    Url: 
    { 
            { 
              "url": 'images/product_images/file-1486718817763.jpeg',
              "_id": 589d8761ccd6d1231e5c3883 
            } 
    }
   ]

它不工作

我第二次得到这个数组

   [

    Mainid: "589d8761ccd6d1231e5c3882",
    Url: 
    { 
            { 
                "url": 'images/product_images/file-1486718817763.jpeg',
                "_id": 589d8761ccd6d1231e5c3883 
            },
            {
                "url":"images/product_images/file-1486731092357.png",
                "_id":"589db754375cdc4e8351f0be"
            } 
    }
   ]

工作正常

最佳答案

以正确且更好的方式修复和重构所有内容:

  • 确保正确的 json 和数组格式:无论是否在数组中,对象都必须用花括号括起来。在您的代码中,数组中有一个未用大括号括起来的对象:

而不是这个:

[
    Mainid: ...,
    Url: ...
]

应该是:

[
    {
        Mainid: ...,
        Url: ...
    }
]
  • 每个字符串都必须在引号内:

而不是这个:

"_id": 589d8761ccd6d1231e5c3883 

应该是:

"_id": "589d8761ccd6d1231e5c3883" 
  • 使用数组来表示列表:

而不是这个:

Url: { 
        {
            "url": 'images/product_images/file-1486718817763.jpeg',
            "_id": '589d8761ccd6d1231e5c3883'
        }
     }

应该是:

Url: [ 
        {
            "url": 'images/product_images/file-1486718817763.jpeg',
            "_id": '589d8761ccd6d1231e5c3883'
        }
     ]
  • 以更好的方式命名变量,例如数组的数据以及数组中每个元素的数据。

然后你就可以让一切正常工作并且可读了:

<!DOCTYPE html>
<html>
    <head>
        <script src="js/angular.min.js"></script>          
        <script>            
            var app = angular.module("myApp", []);          
            app.controller("myCtrl", function ($scope) {                
                $scope.datas = [ { 
                                    Mainid: "589d8761ccd6d1231e5c3882",
                                    Url: [ 
                                             {  
                                                "url":'images/product_images/file-1486718817763.jpeg',
                                                "_id": '589d8761ccd6d1231e5c3883'
                                             }
                                         ]
                                 }
                               ];   
                console.log($scope.datas);
            });
        </script>   
    </head>

    <body ng-app="myApp" ng-controller="myCtrl">
        <div ng-repeat="data in datas">
            <div class="add-pic-box1 col-md-3" ng-repeat="img in data.Url">             
                <img  class="thumb" ng-model="add_new_ads_mdl.img_add" imgid = "{{img._id}}" src="{{img.url}}" />
                <span><i class="fa fa-times" ng-click="close_img(data.url._id)"></i></span>
            </div>
        </div>
    </body>
</html>

关于javascript - Angularjs - ng-repeat 不适用于单个数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42159100/

相关文章:

java - java中比较两个数组列表

javascript - 为什么我的范围函数在循环应该关闭后显示未定义的值?

javascript - expressjs自动以json结尾?

javascript - 如何让Javascript改变样式?

javascript - AngularJS 中的数组未获取字符串值

javascript - 如何在 AngularJS 中处理和显示对象数组

ios - iTunesConnect AngularJS 错误

c - 通过引用传递二维数组

javascript - 将值存储在 java 或 javascript 中,以便可以将其传递给另一个 JSP

AngularJs、Jboss 和 JAAS