首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角Json循环

问角Json循环
EN

Stack Overflow用户
提问于 2015-07-01 07:46:24
回答 3查看 109关注 0票数 2

你好,我是新来的角,我有一个要求如下。

app.js

代码语言:javascript
复制
$scope.fields = {
  "fields": {
    "LastName1": "ABC",
    "FirstName1": "XYZ",
    "LastName2": "123",
    "FirstName2": "345",
    "LastName3": "PQR",
    "FirstName3": "ASD",
    }
};

在我的html中,我需要循环这个并显示在

代码语言:javascript
复制
index.html
<tr ng-repeat="key in fields">

这似乎不管用。请帮帮忙。

我想要我的输出

代码语言:javascript
复制
LastName1   ABC
FirstName1  XYZ

诸若此类。

另外,如果用户对此做了任何更改,我希望能够将更改推回Json字段。请帮帮忙。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-01 07:48:25

您可以使用(key, value) in object语法。

你的例子中的 :

代码语言:javascript
复制
<div ng-repeat="(key1, value1) in fields">
    <li ng-repeat="(key2, value2) in value1">{{key2}} : {{value2}}</li>
</div>.

但是:

您需要注意的是,JavaScript规范没有定义对象返回的键的顺序。(为了在角1.3中减轻这一点,ngRepeat指令用于按字母顺序对键进行排序。) 版本1.4删除了字母排序。我们现在依赖于浏览器在myObj中运行密钥时返回的顺序。浏览器似乎通常遵循按定义键的顺序提供密钥的策略,尽管在删除和恢复键时也会出现异常。请参阅问题 如果不希望这样做,建议的解决方法是将对象转换为一个数组,该数组在提供给ngRepeat之前按照您喜欢的顺序排序。您可以使用过滤器(如toArrayFilter )来完成此操作,也可以自己在对象上实现$watch。

更多细节:https://docs.angularjs.org/api/ng/directive/ngRepeat

编辑:如果你现在想改变对象怎么办?

你做不到:

代码语言:javascript
复制
<div ng-repeat="(key1, value1) in fields">
  <h3>{{key1}}</h2>
  <li ng-repeat="(key2, value2) in value1">
    <input ng-model="value2" /><br />
    {{key2}} : {{value2}}
  </li>
</div>

为什么?因为ng模型将更改当前作用域中的value2,而不是对象fields中的,因为您不使用点表示法。

对于每个项/迭代,ng-重复创建一个新的作用域,该范围通常是从父作用域继承的,但它也将项的值分配给新子作用域上的新属性。

更多细节:https://github.com/angular/angular.js/wiki/Understanding-Scopes

但是你可以做:

代码语言:javascript
复制
<div ng-repeat="(key1, value1) in fields">
  <h3>{{key1}}</h2>
  <li ng-repeat="(key2, value2) in value1">
    <input ng-model="fields[key1][key2]" /><br />
    {{key2}} : {{value2}}
  </li>
</div>

看看!

票数 5
EN

Stack Overflow用户

发布于 2015-07-01 07:57:29

试着改为:

代码语言:javascript
复制
<tr ng-repeat="(key, value) in fields.fields">
  <td>{{key}}</td>
  <td>{{value}}</td>
</tr>

下面是一个可以更新模型的工作柱塞:http://jsfiddle.net/ttgfybk0/1/

票数 2
EN

Stack Overflow用户

发布于 2015-07-01 08:04:18

重复数据采用对象格式,如

代码语言:javascript
复制
{
  "LastName1": "ABC",
  "FirstName1": "XYZ",
  "LastName2": "123",
  "FirstName2": "345",
  "LastName3": "PQR",
  "FirstName3": "ASD",
}

使用ng-repeat="(key, value) in expression"

代码语言:javascript
复制
<tr ng-repeat="(key, value) in fields.fields">
  <td>{{key}} {{value}}</td>
</tr>

工作示例是http://plnkr.co/edit/Y5lPH1?p=preview

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31155428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档