2017-04-09 13 views
0

私のアプリでvue-authenticateを使用しようとしましたが、プラグインのメソッドを使用していくつか問題があります。このプラグインは依存関係がvue-resourceなので、最初の手順は両方のパッケージをインストールすることです。 main.jsファイル内プラグインがVueJSでアクティブにならない

ザ・、私はをインポートし、ローカル認証のための具体的な構成を含む両方のパッケージ、アクティブ:

import Vue from 'vue' 
import VueResource from 'vue-resource' 
import VueAuthenticate from 'vue-authenticate' 
// ... 
Vue.use(VueResource) 
Vue.use(VueAuthenticate, { 
    baseUrl: 'http://sgc-server.dev', 
    tokenType: 'Token' 
}) 

を今、Loginという名前の私のログインコンポーネントで、メソッドを作成するにaLoginと呼ばれます名前の衝突を回避する:このコンポーネントで

// ... 
methods: { 
    aLogin: (_credenciales) => { 
    this.$auth.login(_credenciales).then((_carga) => { 
     // Ejecutamos la lógica que sigue a un login exitoso 
     console.log(_carga) 
    }) 
    } 
} 
// .. 

credencialesがで定義され、オブジェクトであります2つの特性を有する、usernameおよびpassword。メソッドaLoginは、submitイベントのフォームで呼び出されます。

<form class="form" @submit.prevent="aLogin(credenciales)"> 

しかし、これはコンソールにはありません。

Login.vue?8031:64 Uncaught TypeError: Cannot read property 'login' of undefined 
    at VueComponent.aLogin (eval at <anonymous> (app.js:1987), <anonymous>:18:18) 
    at Proxy.boundFn (eval at <anonymous> (app.js:735), <anonymous>:125:14) 
    at submit (eval at <anonymous> (app.js:7875), <anonymous>:21:13) 
    at HTMLFormElement.invoker (eval at <anonymous> (app.js:735), <anonymous>:1657:18) 

それはすでにmain.jsに登録されている場合this.$authundefinedあるのはなぜ?正しく起動するにはどうすればいいですか?

ありがとうございます。

答えて

2

Do は、太い矢印の機能を持つVueのメソッドを定義します。これを行うと、thisはVueインスタンスを参照しません。

いいえ、それは `window`ではありませんVueJS: why is “this” undefined?

+0

を参照してください

methods: { aLogin: function(_credenciales){ this.$auth.login(_credenciales).then((_carga) => { // Ejecutamos la lógica que sigue a un login exitoso console.log(_carga) }) } } 

を試してみてください。これはコンポーネントクラス(またはコンストラクタ)です。 – Leo

+0

@leoあなたはこの場合、それが窓ではないと思います。これは囲みスコープまたは未定義です。しかし、クラスやコンストラクタではありません。 – Bert

関連する問題