1
是的,這是我的一次。我試圖根據一個字符串數組來過濾一個數組。所以,當一個字符串過濾器很容易與Vue公司...Vue JS使用數組來過濾另一個數組?
<div v-for="item in items | filterBy 'words' in 'property'">
...多個搜索字符串變得更加複雜。已經有幾個關於如何在StackOverflow上做到這一點的問題,但答案很少。目前我正在嘗試爲我的需要重新定義自定義篩選器here,但它不起作用。
我的使用情況: 我有組陣列(複選框),用戶可以選擇要過濾的人的數組。每個人被分配到一個或多個組,因此,如果任何其中一個組被用戶選中,則該人應該出現。
所以我的模板是這樣的:
<template v-for="group in ensemble_groups">
<input name="select_group[]" id="[email protected]{{ $index }}"
:value="group"
v-model="selected_groups"
type="checkbox">
<label for="[email protected]{{ $index }}">@{{ group }}</label>
</template>
<template v-for="person in cast | filterBy selectGroups">
<div>@{{ person.actor_name }}</div>
</template>
你看我的自定義過濾器selectGroups
呢?這裏是我的Vue陣列:
selected_groups: [],
ensemble_groups: ["Leads","Understudies","Children","Ensemble"],
cast: [
{
actor_name: "Dave",
groups: ["Leads"],
},
{
actor_name: "Jill",
groups: ["Leads"],
},
{
actor_name: "Sam",
groups: ["Children","Ensemble"],
},
{
actor_name: "Austin",
groups: ["Understudies","Ensemble"],
},
],
最後,這裏是自定義過濾器。我不知道它是否被觸發,因爲當我點擊一個組複選框時,沒有任何反應。
filters: {
selectGroups: function() {
if (!selected_groups || selected_groups.length === 0) {
return cast;
}
return this.recursiveFilter(cast, selected_groups, 0);
}
},
methods: {
recursiveFilter: function(cast, selected_groups, currentPosition) {
if (currentPosition+1 > selected_groups.length)
return cast;
var new_cast;
new_cast = cast.filter(function(person) {
for (group of person.groups) {
if (group.value == selected_groups[currentPosition])
return true;
}
});
return this.recursiveFilter(new_cast, selected_groups, currentPosition+1);
}
}
因此,如果用戶選擇Leads
只有Dave和吉爾應該會出現。如果用戶然後檢查Children
,Dave,Jill和Sam應該出現。我很親密!
我會愛是一個filterBy修改器類似於' danfo
A
1
+0
+0
+0
0
+0
+1
相關問題
-
1. 使用一個數組來過濾另一個數組
-
2. 使用一個數組過濾掉另一個數組
-
3. 如何使用另一個數組的值過濾numpy數組?
-
4. 如何使用另一個數組和regexp過濾數組?
-
5. 使用數組來過濾一個數組Javascript
-
6. 過濾器一個數組,它是另一個數組
-
7. 根據另一個數組過濾出一個數組
-
8. 通過另一個數組過濾可觀察數組?
-
9. 過濾基於另一個數組
-
10. 過濾在Vue公司,嵌套數組
-
11. 節點JS - 過濾數組
-
12. 如何從Ember中的另一個數組過濾數組?
-
13. 按另一個數組中的值過濾數組?
-
14. 基於另一個數組過濾$ _REQUEST數組?
-
15. 如何用另一個數組過濾一個數組的對象
-
16. 如何使用另一個數組中的鍵過濾多維數組PHP
-
17. 通過匹配來自另一個陣列的多個值來過濾數組
-
18. 如何使用數組過濾數組?
-
19. iOS使用數組過濾數組
-
20. 使用另一個陣列過濾數組
-
21. 使用多個值過濾數組
-
22. 過濾來自類數組
-
23. 填寫一個JavaScript數組與另一個JS數組
-
24. 如何使用另一個數組過濾對象數組以定義要過濾的對象
-
25. 過濾來自另一個元組列表的元組的RDD
-
26. 組合框來過濾另一個組合框
-
27. 使用array_filter過濾數組
-
28. 使用NSPredicate過濾數組
-
29. 更新Vue中的數據數組JS
-
30. 如何按值過濾數組中的對象並使用該值來省略另一個數組或對象?
最新問題
-
1. jquery循環條件
-
2. 爲什麼SQLAlchemy關聯對象中的外鍵標記爲主鍵?
-
3. 爲什麼我的禁用/啓用複選框在JQuery中不起作用?
-
4. 將自定義表格行添加到PHP中的HTML表格中
-
5. 如何防止對php或mysql級別的雙表單提交?
-
6. PostgreSQL中的時間序列有很大的查詢需求
-
7. 如何模擬上下文(ActorContext)?
-
8. 包括恢復提交的Rebase
-
9. 如何從存儲在郵件Laravel
-
10. 閱讀Csv到namedtuple
-
1. 使用一個數組來過濾另一個數組
-
2. 使用一個數組過濾掉另一個數組
-
3. 如何使用另一個數組的值過濾numpy數組?
-
4. 如何使用另一個數組和regexp過濾數組?
-
5. 使用數組來過濾一個數組Javascript
-
6. 過濾器一個數組,它是另一個數組
-
7. 根據另一個數組過濾出一個數組
-
8. 通過另一個數組過濾可觀察數組?
-
9. 過濾基於另一個數組
-
10. 過濾在Vue公司,嵌套數組
回答
我會使用計算屬性而不是過濾器和方法。
我會通過每個演員,如果他們的任何組是
selected_groups
我會允許它通過過濾器。我會這樣使用Array.some
。這裏有一個快速演示中,我設置了,可能是有用的:http://jsfiddle.net/crswll/df4Lnuw6/8/
來源
2016-10-14 19:09:23
'Array.some'對我來說是全新的.... ....如何學習這些東西?! – danfo
有時真的遇到它。 –
好吧,這就像一個魅力....謝謝你! – danfo
由於過濾器被棄用(在
v-for
,看到比爾的評論),你應該進入使得computeds做filtery東西的習慣。(如果你在IE瀏覽器,你不能使用
includes
沒有填充工具。你可以使用indexOf...>=0
代替)來源
2016-10-14 19:11:25
過濾器在哪個版本中被棄用?這很好,因爲我只是從Vue開始。我確定不想用舊代碼開始。 – danfo
「v-for」上的過濾器已棄用。不過你可以在'{{...}}中使用它們。 –
相關問題