2014-09-06 115 views
3

我有我試圖過濾以下虛構的對象:過濾收集由孩子

{ 
    "0":{ 
     "boy":{ 
      "age":"32", 
      "name":"Daniel Grey" 
     } 
    }, 
    "1":{ 
     "boy":{ 
      "age":"23", 
      "name":"John Doe" 
     } 
    } 
} 

,然後納克重複指令如下:

<ul> 
    <li ng-repeat="person in people">{{person.boy.name}}<li> 
</ul> 

我的問題是,如何通過「名稱」過濾人員?我已經試過:

<input type="text" ng-model="name"> 
<ul> 
    <li ng-repeat="person in people | filter:name">{{person.boy.name}}<li> 
</ul> 

...但沒有任何反應[NG-模式似乎從視圖中斷開! ]。

任何反應非常感謝!

謝謝!

+0

看起來很好http:// jsfiddle。net/arunpjohny/7cnocmpr/1/ – 2014-09-06 02:43:11

+1

'people'不是一個有效的JSON對象btw – Dalorzo 2014-09-06 02:53:40

回答

1

更新的答案,每個操作的更新

看着你fiddle,你$scope.people本質上是一個大的JSON對象的數組,其中多個嵌套boy對象。這很難合作。如果你有過JSON對象的構造控制,我會建議轉換成多個JSON對象的數組,這可能看起來像:

$scope.people = [ 
    { 
     "name":"Daniel Grey", 
     "age":"32", 
     "gender": "male" 
    }, 
    { 
     "name":"John Doe", 
     "age":"23", 
     "gender": "male" 
    } 
]; 

注意我是如何轉換的boy鑰匙插入gender屬性。

如果您確實無法控制數據結構,則可能需要提供一個自定義過濾器來解析嵌套結構。

看一下這個fiddle。有幾件事情要注意:

  1. 我在ng-repeat指定people[0]檢索您的陣列中的一個大JSON對象。
  2. 定製nameFilter只搜索.boy.name屬性。

原來的答案

如果您只是名想讓你的過濾器,您必須指定在ng-model指令的特定屬性。所以你的情況,這將是

<input type="text" ng-model="search.boy.name"> 
<ul> 
    <li ng-repeat="person in people | filter:search">{{person.boy.name}}<li> 
</ul> 

但首先你需要修復您的JSON對象。

UPDATE:

fiddle現場演示。我注意到僅使用名稱搜索過濾器不適用於angularjs 1.2.1,但適用於angularjs 1.2.2。

+0

我已經更新了我的應用程序中實際結構的JSON對象。問題仍然存在:我如何過濾「名稱」​​? – 2014-09-06 08:29:16

+0

@AlexandruPopovici我在回答中添加了小提琴。請試一試。 – 2014-09-06 09:22:57

+0

非常感謝你的努力來幫助我。你非常友善,我很感激。我已經看到你的小提琴,事實上,它的工作。但是,再看看我的JSON對象,這有點不同。我已經用新結構更新了第一篇文章,您可以在這裏看到:http://jsfiddle.net/apwwy84s/2/。還有一個附註:我正在使用angularjs v.1.3 – 2014-09-06 14:15:39