teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

Improve readability

2016/09/17 17:50

投稿

syuilo
syuilo

スコア393

answer CHANGED
@@ -9,8 +9,8 @@
9
9
  -----------
10
10
 
11
11
  以下のように書いてみてください。
12
- Riotは、this.でアクセスできるメンバーにバインドできます。
12
+ Riotは、``this.``でアクセスできるメンバーにバインドできます。
13
- また、内部で非同期処理の後、プロパティを更新する場合は明示的に``update``を呼び出す必要があります。
13
+ また、**内部で非同期処理の後、プロパティを更新する場合は明示的に``update``を呼び出す必要があります。**
14
14
 
15
15
  ```javascript
16
16
  this.onChange = (e) => {

3

Use const

2016/09/17 17:49

投稿

syuilo
syuilo

スコア393

answer CHANGED
@@ -14,15 +14,16 @@
14
14
 
15
15
  ```javascript
16
16
  this.onChange = (e) => {
17
- var fileData = e.target.files[0];
17
+ const fileData = e.target.files[0];
18
- var fileType = fileData.type;
18
+ const fileType = fileData.type;
19
19
 
20
20
  if(!fileType.match(/^image/)) {
21
21
  alert('画像を選択してください');
22
22
  return;
23
23
  }
24
- var reader = new FileReader();
25
24
 
25
+ const reader = new FileReader();
26
+
26
27
  reader.onerror = () => {
27
28
  alert('ファイル読み取りに失敗しました')
28
29
  };

2

追記に対して追記

2016/09/17 17:44

投稿

syuilo
syuilo

スコア393

answer CHANGED
@@ -3,4 +3,37 @@
3
3
 
4
4
  ```javascript
5
5
  const filename = this.fileInput.files[0].name;
6
+ ```
7
+
8
+ 追記に対して
9
+ -----------
10
+
11
+ 以下のように書いてみてください。
12
+ Riotは、this.でアクセスできるメンバーにバインドできます。
13
+ また、内部で非同期処理の後、プロパティを更新する場合は明示的に``update``を呼び出す必要があります。
14
+
15
+ ```javascript
16
+ this.onChange = (e) => {
17
+ var fileData = e.target.files[0];
18
+ var fileType = fileData.type;
19
+
20
+ if(!fileType.match(/^image/)) {
21
+ alert('画像を選択してください');
22
+ return;
23
+ }
24
+ var reader = new FileReader();
25
+
26
+ reader.onerror = () => {
27
+ alert('ファイル読み取りに失敗しました')
28
+ };
29
+
30
+ reader.onload = () => {
31
+ this.preview = true;
32
+ this.previewSrc = reader.result;
33
+ this.update();
34
+ console.log(preview);
35
+ };
36
+
37
+ reader.readAsDataURL(fileData);
38
+ };
6
39
  ```

1

Add example

2016/09/17 17:41

投稿

syuilo
syuilo

スコア393

answer CHANGED
@@ -1,2 +1,6 @@
1
1
  Riotにそういった機能はありません。公式ドキュメントに書いてあることが全てで、非常にシンプルです。
2
- name属性を与えた要素には``this.hoge``のようにしてアクセスできるので、それでファイルを取得します。
2
+ name属性を与えた要素には``this.hoge``のようにしてアクセスできるので、それでファイルを取得します。
3
+
4
+ ```javascript
5
+ const filename = this.fileInput.files[0].name;
6
+ ```