質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

Q&A

解決済

1回答

483閲覧

vue スクロールを止めた時に処理を実行する

退会済みユーザー

退会済みユーザー

総合スコア0

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

0グッド

0クリップ

投稿2018/03/20 04:37

typescript

1 2timer = false 3list = "" 4 5func(id) { 6 this.list += ( id + "," ) 7 $("#area").scroll(function() { 8 if (this.timer !== false) { 9 clearTimeout(this.timer); 10 } 11 this.timer = setTimeout(function() { 12 13 this.list = this.list.slice(0,-1) 14 let params = new URLSearchParams() 15 params.append("verison", this.version) 16 params.append("list", this.list) 17 axios.post(url_base + '', params) 18 .then(response => { 19 20 } 21 }) 22 }) 23 }, 200); 24 25 });

listに文字列を追加してゆき、スクロールを止めたタイミングでaxiosでpostしたいのですが、

this.list += ( id + "," )

でブレークをはると文字列が追加されていってるのに、

this.list = this.list.slice(0,-1)

の時にはthis.listはundefinedになってしまっていてsliceができないとエラーが出ます...

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

karamarimo

2018/03/20 11:08

timer と list は vue の data でしょうか? func (id) もどのように呼び出されるのか分かりません。vue のコンストラクタのオプション全体を載せてもらえますか。
guest

回答1

0

ベストアンサー

コード中に2回functionが出てきていますがここで、thisのscopeが切れているのじゃないでしょうか。
もしwebpackを使ってポリフィルが使えるのであれば、
function() {

() => {
とすると、うまくいく可能性があります。
参考

もう一つはthisが変わってしまう前に別の変数に入れてしまうことがよく使われます。
いずれにせよ、thisのscopeが絡んでいそうですので、その当たりを見直してみてください

func(id) { this.list += ( id + "," ) var self = this $("#area").scroll(function() { if (self.timer !== false) { clearTimeout(self.timer); } self.timer = setTimeout(function() { self.list = self.list.slice(0,-1) let params = new URLSearchParams() params.append("verison", this.version) // ←このthisはなに? params.append("list", self.list) axios.post(url_base + '', params) .then(response => { } }) }) }, 200); });

投稿2018/03/25 15:44

sakapun

総合スコア888

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/03/26 02:24

ありがとうございます、見てみます...(>___<)
退会済みユーザー

退会済みユーザー

2018/04/02 07:55

thisをlet selfに入れたらできました!!!ありがとうございます(>___<)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問