2017-05-29 5 views
0

console.log(これ)doSomthingメソッドでは、 "null"と表示されます。Vue.js - componentsnetの "this"オブジェクトを取得するにはどうすればいいですか?

私は "メイン" 表示されますが、 "この" オブジェクトがnull ..です:(

currentPageにの "メイン" にアクセスする方法は?

<template> 
    <div class="tab_menu_wrap"> 
     <ul class="tab_menu"> 
      <li v-for="tab in tabMenus" v-bind:class="{ active: tab.isActive }" v-on:click="doSomthing"> 
       {{ tab.text }} 
      </li> 
     </ul> 
    </div> 
</template> 

<script> 
    export default { 
     name: 'tab-menu', 
     props: { 

     }, 
     data() { 
      return { 
       currentPage: "main", 
       isActive: true, 
       tabMenus: [ 
        { 
         text: 'A', 
         isActive: true 
        }, 
        { 
         text: 'B', 
         isActive: false 
        }, 
        { 
         text: 'C', 
         isActive: false 
        } 
       ], 
       doSomthing: function(e){ 
        console.log(this) 
       } 
      }; 
     }, 
     method: { 
     }, 
     computed: { 
     } 
    }; 
</script> 
+0

は、なぜあなたはしかし、あなたのデータに関数を定義します - もしあなたが本当にそれを望むなら、あなたは 'function(e){console.log(this);}のようにする必要があります。 } .bind(this) ' - これはあなたのメソッドにあることが望ましいでしょう(あなたが定義したメソッドではありません) –

+0

ありがとう!私はちょうど好奇心を持っています。私はあなたから助けを得る。ありがとうございました! –

答えて

0
される(this.currentPage)はconsole.log考えます。?

私は、何のアクションをコンポーネントの状態を持つべきではない)(データを考える のように、あなたのコンポーネントのメソッドに、あなたのdoSomethingのを移動してみてください:

<template> 
    <div class="tab_menu_wrap"> 
     <ul class="tab_menu"> 
      <li v-for="tab in tabMenus" v-bind:class="{ active: tab.isActive }" v-on:click="doSomething"> 
       {{ tab.text }} 
      </li> 
     </ul> 
    </div> 
</template> 

<script> 
    export default { 
     name: 'tab-menu', 
     props: { 

     }, 
     data() { 
      return { 
       currentPage: "main", 
       isActive: true, 
       tabMenus: [ 
        { 
         text: 'A', 
         isActive: true 
        }, 
        { 
         text: 'B', 
         isActive: false 
        }, 
        { 
         text: 'C', 
         isActive: false 
        } 
       ] 
      }; 
     }, 
     methods: { 
       doSomething: function(e){ 
        console.log(this) 
       } 
     }, 
     computed: { 
     } 
    }; 
</script> 
+0

ありがとう、私はおそらくより多くのjavascriptを学ぶ必要があります。 –

+0

[vue docs](https://vuejs.org/v2/guide/)の詳細を確認して、vueコンポーネントの使用方法を正しく理解してください。 幸運 –

関連する問題