【问题标题】:ng-repeat is not printing based on the order of the json objectng-repeat 不根据 json 对象的顺序打印
【发布时间】:2019-03-27 11:00:51
【问题描述】:

我有一个基于 JSON 以错误顺序打印的表格。

表格如下所示,我希望它按照 JSON 的顺序排列:

为什么 ng-repeat 没有在找到它时打印它。这是在 ServiceNow 平台上开发的。

此数据是完全动态的,标题和数据可以根据选择的表或选择的标题而变化。

作业组 |号码 |简短描述 |已创建

公司级别 1 INC0039473 无法访问电子邮件 01/02/2019 02:54:26

公司级别 2 INC0039474 此事件用于 SQL 日常管理和主动检查。 01/02/2019 07:00:07

公司 2 级 INC0039475 可疑电子邮件 01/02/2019 07:14:05

公司级别 1 INC0039476 删除邮箱访问 01/02/2019 07:30:51

公司级别 1 INC0039477 PDC - LogicMonitor - 服务器离线 01/02/2019 08:25:56

公司级别 1 INC0039479 无法登录 citrix 01/02/2019 08:44:21

HTML

<div ng-if="reportDetails.isList">
        <table class="etable" >
          <tbody>
            <tr class="eborder">
              <th ng-repeat="(key, data) in reportDetails.values[0]">{{key}}</th>
            </tr>
            <tr ng-repeat="(key, data) in reportDetails.values">
              <td ng-repeat="rows in reportDetails.values[key]">{{rows}}</td>
            </tr>
          </tbody>
        </table>
      </div>

JSON 数据

"values":[
{
"Number":"INC0039473",
"Assignment group":"Company Level 1",
"Created":"01/02/2019 02:54:26",
"Short description":"No access to email"
},
{
"Number":"INC0039474",
"Assignment group":"Company Level 2",
"Created":"01/02/2019 07:00:07",
"Short description":"This Incident is for SQL daily admin and pro-active checks."
},
{
"Number":"INC0039475",
"Assignment group":"Company Level 2",
"Created":"01/02/2019 07:14:05",
"Short description":"Suspicious email"
},
{
"Number":"INC0039476",
"Assignment group":"Company Level 1",
"Created":"01/02/2019 07:30:51",
"Short description":"remove mailbox access"
},
{
"Number":"INC0039477",
"Assignment group":"Company Level 1",
"Created":"01/02/2019 08:25:56",
"Short description":"PDC - LogicMonitor - Server Offline"

【问题讨论】:

  • 您的意思是用 AngularJS 而不是 Angular 进行标记吗?
  • 你想让你的输出像INC0039473 Company Level 1
  • Chrome 更改 json 以字母顺序显示
  • @IsraGab 如果我添加更多标题,它们不是按字母顺序排列的
  • @AjinkyaDhote yes order 应该是 INC0039473 Company Level ,但它应该是 JSON 在 Number、Assignment Group、Created On、Assigned 中的任何顺序

标签: javascript angularjs servicenow


【解决方案1】:

你可以试试这样的。 要动态呈现列,我建议处理您的 json 以获取数组中的确切顺序并使用它,或者如果这对您来说不是问题,您可以简单地对列进行硬编码

<div ng-if="reportDetails.isList">
    <table class="etable" >
      <tbody>
        <tr class="eborder">
          <th >Number</th>
          <th>Assignment group</th>
        </tr>
        <tr ng-repeat="(key, data) in reportDetails.values">
          <td ng-repeat="rows in reportDetails.values[key]">{{rows.Number}}{{rows["Assignment group"]}}</td>
        </tr>
      </tbody>
    </table>
  </div>

【讨论】:

    【解决方案2】:

    确实如此。

    ng-repeat 应该用于遍历数组,而不是 JSON

    当你写的时候:

     <th ng-repeat="(key, data) in reportDetails.values[0]">{{key}}</th>
    

    reportDetails.values[0] 是一个 JSON。

    因为Assignementa开头,NumberN开头,所以Assignement会首先显示。

    解决方案是为元数据设置单独的数组。 检查例如here

    检查这个question(看起来像你的)。答案也是一个很好的解决方法。

    【讨论】:

    • 当我添加其他列时,它按此顺序出现分配组编号简短描述已创建
    • 看看这个小提琴你会看到它的字母顺序:jsfiddle.net/mphy59d8/2
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多