2017-07-28 53 views
1

我想用单个行中的AngularJS的ng-repeat在另一个ng-repeat中填充td。我有它的工作,直到我尝试访问第三个嵌套的对象。用复杂的JSON填充嵌套的ng-repeat

对象heicarchy:

object

-renewalUIs

--patentUI

---property.patentApplicationNumber (this is what I want to access)

本来我一开始的$.each功能,通过每个对象循环然后我碰到这个线程来到,它解释说,它是一个更高效,更容易循环数据。我的问题是我可以访问renewalUIs的属性,但是当我添加一个额外的对象到我的ng-repeat语法时,没有数据显示。

此代码:

<tr ng-repeat="transaction in $ctrl.transactionHistory"> 
    <td> 
     <span ng-repeat="item in transaction.renewalUIs">{{item.renewalDueDate}}<br></span> 
    </td> 
</tr> 

这不(但我需要它):

<tr ng-repeat="transaction in $ctrl.transactionHistory"> 
    <td> 
     <span ng-repeat="item in transaction.renewalUIs.patentUI">{{item.patentApplicationNumber}}<br></span> 
    </td> 
</tr> 

问题

为什么不是我的td用数据填充来自patentUI的对象?

JSON

[ 
    { 
     "renewalUIs":[ 
     { 
      "patentUI":{ 
       "patentApplicationNumber":"112233.4", 
       "title":"A patent generated by createDummyPatentUiForSearchAddPatent()", 
       "filingDate":1171411200000, 
       "business":{ 
        "businessNumber":"Bo2", 
        "businessPin":3586, 
        "businessName":"Bodget and Scarper Patent Lawyers In", 
        "phoneNumber":"203141703", 
        "timezone":"(UTC-08:00) Pacific Time (US & Canada)", 
        "street":"Thats a real town name", 
        "city":"Cut and Shooper", 
        "zip":54321, 
        "isBillingAddressSame":true, 
        "billingStreet":"bStr", 
        "billingCity":"bCty", 
        "billingState":"bStt", 
        "billingZip":2222, 
        "id":1, 
        "version":48, 
        "usstate":"Texas" 
       }, 
       "primaryApplicantName":"James Dean", 
       "clientRef":"Electric Bananas", 
       "shortTitle":"Jimaroo", 
       "epoPatentStatus":"EMPTY", 
       "lastRenewedDateExEpo":1485648000000, 
       "renewalYear":7, 
       "renewalStatus":"Renewal in place", 
       "patentPublicationNumber":"112233.4+1", 
       "notifications":null, 
       "id":1, 
       "version":17, 
       "currentRenewalCost":1.11, 
       "costBandEndDate":1501424837236, 
       "renewalCostNextStage":1111111.11, 
       "renewalDueDate":1488240000000, 
       "filingDateUI":"Wed Feb 14, 2007", 
       "notificationUIs":null, 
       "costBandEndDateUI":"Sun Jul 30, 2017", 
       "renewalDueDateUI":"Tue Feb 28, 2017", 
       "lastRenewedDateExEpoUI":"Sun Jan 29, 2017" 
      } 
     }, 
     { 
      "patent":null, 
      "activePaymentId":null, 
      "fee":{ 
       "renewal":null, 
       "renewalFee_EUR":123.45, 
       "extensionFee_EUR":234.56, 
       "processingFee_USD":20.00, 
       "expressFee_USD":230.00, 
       "urgentFee_USD":0.00, 
       "latePayPenalty_USD":0.00, 
       "fxRate":0.88, 
       "subTotal_USD":608.01, 
       "id":2, 
       "version":0 
      }, 
      "certificate":{ 
       "renewal":null, 
       "certificateName":"Harry", 
       "issueDate":1499778000000, 
       "docPath":"hardcodedpdffolder/certificates/", 
       "filename":"dummyCertificateNumber 1.pdf", 
       "certificateTemplateId":"DemoCert#01", 
       "id":1, 
       "version":0, 
       "url":"hardcodedpdffolder/certificates/dummyCertificateNumber 1.pdf" 
      }, 
      "renewalYear":14, 
      "renewalDueDate":1512086399000, 
      "renewalPeriod":"Green", 
      "renewalStatus":"Renewal in place", 
      "renewalAttemptsMade":1, 
      "id":2, 
      "version":0, 
      "renewalDueDateUI":"Thu Nov 30, 2017", 
      "certificateUrl":"hardcodedpdffolder/certificates/dummyCertificateNumber 1.pdf", 
      "patentUI":{ 
       "patentApplicationNumber":"332211", 
       "title":"A patent inspired by Despicable Me", 
       "filingDate":1173657600000, 
       "business":{ 
        "businessNumber":"Bo2", 
        "businessPin":3586, 
        "businessName":"Bodget and Scarper Patent Lawyers In", 
        "phoneNumber":"203141703", 
        "timezone":"(UTC-08:00) Pacific Time (US & Canada)", 
        "street":"Thats a real town name", 
        "city":"Cut and Shooper", 
        "zip":54321, 
        "isBillingAddressSame":true, 
        "billingStreet":"bStr", 
        "billingCity":"bCty", 
        "billingState":"bStt", 
        "billingZip":2222, 
        "id":1, 
        "version":48, 
        "usstate":"Texas" 
       }, 
       "primaryApplicantName":"Paul Newman", 
       "clientRef":"Gru", 
       "shortTitle":"Steal the Moon !", 
       "epoPatentStatus":"EMPTY", 
       "lastRenewedDateExEpo":null, 
       "renewalYear":-1, 
       "renewalStatus":"Renewal in place", 
       "patentPublicationNumber":"112233.4+2", 
       "notifications":null, 
       "id":2, 
       "version":0, 
       "currentRenewalCost":1.11, 
       "costBandEndDate":1501424837240, 
       "renewalCostNextStage":1111111.11, 
       "renewalDueDate":1490914800000, 
       "filingDateUI":"Mon Mar 12, 2007", 
       "notificationUIs":null, 
       "costBandEndDateUI":"Sun Jul 30, 2017", 
       "renewalDueDateUI":"Fri Mar 31, 2017", 
       "lastRenewedDateExEpoUI":"" 
      } 
     } 
     ] 
    } 
] 
+4

因为也许renewalUIs是一个数组?所以可能你需要指定索引或使用更多的ng-repeat – Vivz

+0

请注意,你没有任何JSON。你只是有一个对象。 JSON是一种字符串格式。 –

+0

Ahhhhhh。 @Vivz谢谢。我会研究它 –

回答

1

是patentUI每个renewalUI的属性?

如果是这种情况,ng-repeat将无法正常工作。你可以使用ng-repeat指令迭代集合对象(就像数组一样)。

ngRepeat指令为 集合中的每个项目实例化一次模板。

https://docs.angularjs.org/api/ng/directive/ngRepeat

因此,代码会工作可能是

<tr ng-repeat="transaction in $ctrl.transactionHistory"> 
    <td> 
     <span ng-repeat="item in transaction.renewalUIs">{{item.patentUI.patentApplicationNumber}}<br></span> 
    </td> 
</tr> 
+0

谢谢@jmltalarn。有一个更新UIs,两个专利UI –

+0

renewalUIs是一个数组,因此是可迭代的。该数组内的对象具有一个属性parentUI并包含一个对象,不是一个正确的数组,在这种情况下,它不会被迭代。 – jmtalarn

+0

欣赏反馈 –