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

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回答

405閲覧

vue.$watch()で実行する関数を外に置くとエラーが出る

退会済みユーザー

退会済みユーザー

総合スコア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/14 02:26

typescript

1import Vue from 'vue'; 2import axios from 'axios'; 3import jquery from 'jquery'; 4 5import * as Models from '../../system/typescript-angularjs-client-generated/model/models'; 6import * as ViewModel from './VM'; 7 8/// <reference path="../typings/index.d.ts" /> 9 10/// <reference path="../typings/globals/jquery/index.d.ts" /> 11 12Vue.use(VueObserveVisibility) 13 14export class Main_Contents { 15 16 private ViewModel: ViewModel.VM 17 18 private version: string 19 private hash: string 20 21 constructor(versionStr: string, hash: string) { 22 23 this.ViewModel = new ViewModel.VM() 24 25 let params = new URLSearchParams() 26 params.append("version", versionStr) 27 params.append("hash", hash) 28 axios.post('', params) 29 .then(response => { 30 if (response.data.status == 0) { 31 this.getData() 32 } 33 }) 34 } 35 36 getData(): void { 37 38 let ViewModel = this.ViewModel 39 40 let vue = new Vue({ 41 el: "#all_contents", 42 data: ViewModel, 43 mounted: { 44 45 }, 46 methods: { 47 48 } 49 }); 50 51 /*--view control--*/ 52 53 vue.$watch("flag", function () { 54 vue.$nextTick(function () { 55 vue.data = 1 56 }) 57 }) 58 } 59 } 60}

この形式だと
vue.$watch("flag", function () {
vue.$nextTick(function () {
vue.data = 1
})
})
の部分は正しく動作するのですが

typescript

1vue.$watch("flag", func()) 2 3function func(){ 4 vue.$nextTick(function () { 5 vue.data = 1 6 }) 7}

このような書き方をすると

Argument of type '"flag"' is not assignable to parameter of type '(this: CombinedVueInstance<Vue

と、flagの方にエラーが出てしまします...(>__<)

functionを分けたいんですがどのようにすればいいでしょうか...

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

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

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

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

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

guest

回答1

0

ベストアンサー

vue.$watch("flag", func())と書くと、func()を実行した結果を渡すこととなってしまいます。

関数そのものを渡すときには、vue.$watch("flag", func)のようにかっこ無しで書きます。

投稿2018/03/14 04:09

maisumakun

総合スコア145183

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

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

退会済みユーザー

退会済みユーザー

2018/03/14 04:40

できました、すごいです! ありがとうございます! ただこれ引数を渡す場合などはどうなるんでしょうか(>___<)
syumai

2018/03/16 08:12

>> 引数を渡す場合 func()に引数を渡して実行する関数を渡せばいいので、 vue.$watch("flag", () => func(params)); か、 vue.$watch("flag", function () { func(params); }); みたいな感じで大丈夫です
退会済みユーザー

退会済みユーザー

2018/03/16 08:41

おお!!! ありがとうございます!! あとで試して見ます(>____<)
退会済みユーザー

退会済みユーザー

2018/03/16 08:41

おお!!! ありがとうございます!! あとで試して見ます(>____<)
退会済みユーザー

退会済みユーザー

2018/03/19 05:43

できました!!!ありがとうございます!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問