回答編集履歴

2

修正

2018/04/02 14:18

投稿

karamarimo
karamarimo

スコア2551

test CHANGED
@@ -58,7 +58,11 @@
58
58
 
59
59
 
60
60
 
61
+ 複数のvueインスタンス間での共通処理をまとめるにはmixinなどを用いるのが良いかと思いますが、今の場合ではそもそもインスタンスを複数に分ける必要性がないため、1つにまとめる方法を書いておきます。
62
+
63
+
64
+
61
- Vueインスタンス1つでやれば、APIから取得した値を共有できますし、クラスの判定部分のコードもvueのmethodとして共有できます。
65
+ Vueインスタンス1つにすれば、APIから取得した値を共有できますし、クラスの判定部分のコードもインスタンスのmethodとして共有できます。
62
66
 
63
67
 
64
68
 
@@ -160,7 +164,7 @@
160
164
 
161
165
 
162
166
 
163
- 補足
167
+ # 補足
164
168
 
165
169
 
166
170
 

1

修正

2018/04/02 14:18

投稿

karamarimo
karamarimo

スコア2551

test CHANGED
@@ -16,7 +16,29 @@
16
16
 
17
17
  そして、`title`の変数に入っているstringをキーとして`response`の値を取り出したいのだと思いますが、これでは`"title"`というstringがキーになっています。stringのexpressionをキーとするにはブラケットを用いて`response[title]`と書きます。
18
18
 
19
+
20
+
19
- また、`test-class`という変数名無理。`-`は引き算の演算子としてparseされるので、`test - class`と認識されてしまいます。`-`を使わないようにしょう
21
+ また、プログラム上でハイフンを含むプロパティにアクセスするには`self.test-class`とそのまま書くことはできません。`-`は引き算の演算子としてparseされるので、`self.test - class`と認識されてしまいます。代わりに、`self['test-class']`のようにbracketの中にstringリテラル書くようにする必要があり
22
+
23
+
24
+
25
+ ```js
26
+
27
+ data: {
28
+
29
+ test-class: ""
30
+
31
+ },
32
+
33
+ ```
34
+
35
+
36
+
37
+ objectリテラルでも、quoteなしでキー名にハイフンを使うとsyntax errorになります。`'test-class'`とquoteで囲む必要があります。
38
+
39
+
40
+
41
+ 結局、プロパティ名に`-`を使わなければ楽だと思います。
20
42
 
21
43
 
22
44
 
@@ -131,3 +153,33 @@
131
153
 
132
154
 
133
155
  ```
156
+
157
+
158
+
159
+ --------
160
+
161
+
162
+
163
+ 補足
164
+
165
+
166
+
167
+ ```js
168
+
169
+ const self = this;
170
+
171
+ axios.get('http://localhost:4567/books').then(response => {
172
+
173
+ let title = self.$el.slice(1)
174
+
175
+ self.test-class = response.title.price >1000 ? "class1" : "class2";
176
+
177
+ }).catch(error => {
178
+
179
+ });
180
+
181
+ ```
182
+
183
+
184
+
185
+ と`this`を`self`に退避していますが、今の場合その必要はありません。なぜなら、普通の `function () {}`と違って、arrow function の中の`this`は外側の`this`と必ず同じになるからです。