2017-05-25 108 views
1

我在使用下面的json对象过滤我的表时遇到了问题。 它过滤了一些关键值,但是如果我的json被嵌套,它将无法工作。 我相信我做错了什么和愚蠢的。带有嵌套json的Angularjs过滤器

继承人一样的小提琴。下面https://jsfiddle.net/pnypxhj8/1/

是我的JSON对象:

[ 
{ 
    "EmpId": "3901", //----> Filter works on this 
    "SubmitDate": "30/04/2017", //----> Filter works on this 
    "Employee": "John", //----> Filter works on this 
    "ProdRequest": [{ 
      "ProdName": "Mac Air laptop - Apple", 
      "ManagersApproval": { 
       "Status": "Approved", //----> But Doesnt works on this 
       "ManagersDetails": [{ 
         "Name": "Steve Rock", 
         "Email": "[email protected]" 
        }, 
        { 
         "Name": "Mary Nuts", 
         "Email": "[email protected]" 
        } 
       ], 
       "Comments": "" 
      }, 
      "AdminApproval": { 
       "Status": "Pending", 
       "AdminDetails": [{ 
         "Name": "Hardy Lee", 
         "Email": "[email protected]" 
        }, 
        { 
         "Name": "Moss Grant", 
         "Email": "[email protected]" 
        } 
       ], 
       "Comments": "" 
      }, 
      "RequestStatus": "Pending" 
     }, 
     { 
      "ProdName": "Note Book - Large", 
      "ManagerApproval": { 
       "Status": "Approved", 
       "Approver": [{ 
        "Name": "Jet Lee", 
        "Email": "[email protected]" 
       }], 
       "Comments": "Approved by Jet Lee" 
      }, 

      "AdminApproval": { 
       "Status": "Approved", 
       "AdminDetails": [{ 
         "Name": "Hardy Lee", 
         "Email": "[email protected]" 
        }, 
        { 
         "Name": "Moss Grant", 
         "Email": "[email protected]" 
        } 
       ], 
       "Comments": "" 
      }, 
      "RequestStatus": "Completed" 
     } 
    ] 
}, 
{ 
    "EmpId": "550", 
    "SubmitDate": "22/04/2017", 
    "Employee": "Mary Kom", 
    "ProdRequest": [{ 
      "ProdName": "Seagate Harddisk 500TB", 
      "ManagersApproval": { 
       "Status": "Approved", 
       "ManagersDetails": [{ 
         "Name": "Steve Rock", 
         "Email": "[email protected]" 
        } 
       ], 
       "Comments": "" 
      }, 
      "AdminApproval": { 
       "Status": "Approved", 
       "AdminDetails": [{ 
         "Name": "Hardy Lee", 
         "Email": "[email protected]" 
        }, 
        { 
         "Name": "Moss Grant", 
         "Email": "[email protected]" 
        } 
       ], 
       "Comments": "" 
      }, 
      "RequestStatus": "Approved" 
     }, 
     { 
      "ProdName": "Note Book - Large", 
      "ManagerApproval": { 
       "Status": "Approved", 
       "Approver": [{ 
        "Name": "Jet Lee", 
        "Email": "[email protected]" 
       }], 
       "Comments": "Approved by Jet Lee" 
      }, 

      "AdminApproval": { 
       "Status": "Approved", 
       "AdminDetails": [{ 
         "Name": "Hardy Lee", 
         "Email": "[email protected]" 
        }, 
        { 
         "Name": "Moss Grant", 
         "Email": "[email protected]" 
        } 
       ], 
       "Comments": "" 
      }, 
      "RequestStatus": "Completed" 
     } 
    ] 
} 

]

+2

你能解释一下它的数据是没有得到映射和你真正想实现什么? –

+0

数据正在映射..但它没有得到过滤 “状态”:“已批准”,// ---->但是如果答案是正确的,您是否可以标记为已接受但不适用于此 – nipiv

+0

@nipiv? –

回答

2

第一:你有对象属性一个错字。您的筛选器上有ManagerApproval,但数据中包含ManagersApproval(含S)属性。

二:过滤器应为ng-repeat="a in data.ProdRequest | filter:{ProdName: prodName, ManagerApproval: { Status: managerApproval }}"

这里的工作小提琴:https://jsfiddle.net/pnypxhj8/3/