回答編集履歴

3

説明に補足

2021/06/04 02:05

投稿

FKM
FKM

スコア3647

test CHANGED
@@ -1,4 +1,8 @@
1
1
  これだとmethodsのtoggleHeartで、該当店舗を紐付けるものが何も示されていませんので、全店舗が対象となってしまいます。なので、選択した店舗のidを引っ張ってきて、候補の店舗の中から該当する店舗を取得するようにすればいいのではないでしょうか。
2
+
3
+
4
+
5
+ あと、isActiveがループで制御されている限り、紐付いた値は全部同じ値を返してしまうので、返す値はオブジェクトにして分類しないと駄目な気がします。
2
6
 
3
7
 
4
8
 
@@ -8,33 +12,51 @@
8
12
 
9
13
  <div class="LikesIcon" @click="toggleHeart(shop.id)">
10
14
 
15
+ <i class="fa-heart LikesIcon-fa-heart" :class="{ heart: isActive , fas: isActive ,far: !isActive }">いいね</i>
16
+
17
+    <input :value="act[shop.id]"><!-- テスト用 -->
18
+
19
+ //省略
20
+
21
+ isActive: false,
22
+
23
+    act: [], //ここに評価値を代入していく
24
+
25
+ shops: [
26
+
11
27
  //省略
12
28
 
13
29
  methods:{
14
30
 
15
- toggleHeart(sel_id) {
31
+ toggleHeart(sel_id) {
16
32
 
17
- this.filterShop.filter(function(elem,idx){
33
+ let isActive = this.isActive
18
34
 
19
-         //検索店舗と選択店舗のマッチングを確認
35
+ let act = this.act
20
36
 
21
- if(elem.id === sel_id){
37
+ this.filteredShops.filter(function(elem,idx){
22
38
 
23
- if (!this.isActive) {
39
+ if(sel_id === elem.id){
24
40
 
25
- this.isActive = true;
41
+ if (!isActive) {
26
42
 
27
- } else {
43
+ act[sel_id] = true;
28
44
 
29
- this.isActive = false;
45
+ } else {
30
46
 
31
- }
47
+ act[sel_id] = false;
32
48
 
33
- }
49
+ }
34
50
 
35
- })
51
+ }
36
52
 
53
+ })
54
+
55
+ this.act = act
56
+
37
- },
57
+ },
58
+
59
+
38
60
 
39
61
  }
40
62
 
@@ -42,4 +64,4 @@
42
64
 
43
65
 
44
66
 
45
- 動くかどうかは未検証です(似たようなシステムは作成したことがあります)が、こんな感じで制御すればいけるのでは?
67
+ ボタンとテキストボックスでひととおりの作は検証できたのですが、アイコンでも希望通り動くかどうかは未検証です

2

補足

2021/06/04 02:05

投稿

FKM
FKM

スコア3647

test CHANGED
@@ -16,11 +16,13 @@
16
16
 
17
17
  this.filterShop.filter(function(elem,idx){
18
18
 
19
+         //検索店舗と選択店舗のマッチングを確認
20
+
19
21
  if(elem.id === sel_id){
20
22
 
21
23
  if (!this.isActive) {
22
24
 
23
- this.isActive = true;
25
+ this.isActive = true;
24
26
 
25
27
  } else {
26
28
 

1

括弧がなかった

2021/06/04 01:27

投稿

FKM
FKM

スコア3647

test CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
  this.filterShop.filter(function(elem,idx){
18
18
 
19
- if(elem.id === sel_id)
19
+ if(elem.id === sel_id){
20
20
 
21
21
  if (!this.isActive) {
22
22
 
@@ -40,4 +40,4 @@
40
40
 
41
41
 
42
42
 
43
- 動くかどうかは未検証ですが、こんな感じで制御すればいけるのでは?
43
+ 動くかどうかは未検証です(似たようなシステムは作成したことあります)が、こんな感じで制御すればいけるのでは?