2016-06-22 22 views
0

我試圖過濾到只有一個商店,因爲商店Id是在下拉菜單中選擇的。在角度ng-repeat上使用過濾器

HTML:

<tbody data-ng-repeat="store in orderVm.Stores | filter :{store.id=orderVm.Stores.selectedStore.id}"> 

我不明白如何設置過濾器,使其只顯示一個存儲與指定的ID。

控制器:

vm.Stores = json;// from file 
vm.Stores.selectedStore = { 
    id: vm.Stores[0].Id, 
    name: vm.Stores[0].MarketplaceName 
}; 

vm.Stores:

[ 
    { 
    "Id": 1, 
    "MarketplaceId": 1, 
    "MarketplaceName": "Etsy" 
    ] 
    }, 
    { 
    "Id": 2, 
    "MarketplaceId": 2, 
    "MarketplaceName": "Shopify" 
    } 
] 

我得到的錯誤是意想不到%2C%20expecting%20%5B%3A%5D & P2 = 32 & P3 = orderVm .Store%20%7CNaNilter%20%3A%7Bstore.id%3DorderVm.Stores.selectedStore.id%7D & p4 = .id%3DorderVm.Stores.selectedStore.id%7D

+0

您不應該在過濾器中引用迭代器,因此請嘗試:{Id = orderVm.Stores.selectedStore.id} 並注意區分大小寫。 –

+0

過濾器的第一個參數接受'string','object'或'function',所以在語法上它應該是'{Id:orderVm.Stores.selectedStore.id}',而不是注意等號和冒號 – kazenorin

+0

工作原理:過濾器:{Id:orderVm.selectedStore.id}但我不知道爲什麼。具體來說,我不知道爲什麼Id必須大寫。 – DaveC426913

回答

1

簡單的fi按值刪除您的數據:

<tbody data-ng-repeat="store in orderVm.Stores | filter:Vm.Stores.selectedStore.id"> 

它將獲得屬性值爲Vm.Stores.selectedStore.id的對象。由於名稱不是數字(id),因此您可以使用此過濾器。

爲了具體的過濾器按ID的值:

<tbody data-ng-repeat="store in orderVm.Stores | filter:{Id:Vm.Stores.selectedStore.id}:true"> 

語法filter:{propertyName:value}:true

true爲精確匹配。

+0

我試過這個: filter:orderVm.Stores.selectedStore.id但它不過濾 - 它給我所有的商店。至少我不會得到一個錯誤。 – DaveC426913

+0

好的,這一個工作:過濾器:{Id:orderVm.Stores.selectedStore.id}:true – DaveC426913

+0

我不明白爲什麼我使用Id時,我有指定ID是Id由過濾器或中繼器保留? – DaveC426913