AngularJS在视图中推送到数组解析

时间:2014-11-11 10:56:51

标签: angularjs angularjs-ng-repeat

我有一个控制器,我在这里声明模型:

$scope.Model =[];

在我进行休息调用后,结果我将其推送到模型:

$scope.Model.push(results.data);

返回的数据可以有不同的长度和大小:

Name
Email
Items
   Item 1
   Item 2
   Item n
Roles
   Role 1
   Role 2
   Role n

使用AngularJS中的数组处理此问题并在视图中使用ng-repeat以显示数据的最佳做法是什么?

我应该像这样声明我的数组:

$scope.Model =[];

并推送结果:

$scope.Model.push(results.data);   

或者像这样:

$scope.Model =[{
   Name: '',
   Email: '',
   Items: [{
       Id: '',
       Name: '',
       Price: ''
   }],
   Roles: [{
       Id: '',
       Name: ''
   }], 
}];

并将结果记录下来:

$scope.Model = results.data;

2 个答案:

答案 0 :(得分:0)

它基于您的响应和方案。但ng-repeat需要ArrayArray list

1)数组

示例1(普通数组响应)

$scope.names= ["Apple", "Banana", "Orange"];

<ul>
    <li ng-repeat="x in names">
      {{ x }}
    </li>
</ul>

示例2(具有数组的对象响应)

$scope.names= {
"fruits": ["Apple", "Banana", "Orange"]
};

<ul>
    <li ng-repeat="x in names.fruits">
      {{ x }}
    </li>
</ul>

2)数组列表

示例1(普通数组列表响应)

$scope.names = [{
"id": "1",
"name": "Asik"
},
{
    "id": "1",
    "name": "John"
},
{
    "id": "1",
    "name": "Smith"
}];

<ul>
    <li ng-repeat="x in names">
         id:{{ x.id }}, name:{{ x.name }}
    </li>
</ul>

示例2(具有数组列表的对象响应)

$scope.names = {
"success": "true",
"items": [{
    "id": "1",
    "name": "Asik"
},
{
    "id": "1",
    "name": "John"
},
{
    "id": "1",
    "name": "Smith"
}]
};

<ul>
    <li ng-repeat="x in names.items">
         id:{{ x.id }}, name:{{ x.name }}
    </li>
</ul>

基本上,service / ajax响应来自ArrayArray list。因此,您不需要执行以下步骤。

$scope.Model =[];
$scope.Model.push(results.data);

但上述情况在某些情况下(例如:合并2个服务/ ajax响应)

答案 1 :(得分:0)

我使用了以下内容:

angular.copy(results.data, $scope.Model)

这实际上会将其余服务的结果复制到我的模型中,而不必声明模型的每个属性。