在Vue模板中使用'this'?

时间:2017-04-03 15:14:33

标签: vue.js vuejs2

我的想法很混乱:我不知道为什么我会在Vue.js模板中看到我们可以使用this的地方。现在我不知道我必须使用哪个。

我在这里测试了一些案例:

new Vue({
  el: "#app",
  data: function() {
  	return {
    	myVar: 'test'
    }
  },
  methods: {
    returnText: function() {
    	console.log('methods returnText !');
      return 'return text from methods !';
    }
  },
  computed: {
    computedProp: function() {
    	return 'computed !';
    }
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.2.5/vue.js"></script>

<div id="app">

  {{ this.myVar }}<br><!-- this works -->
  {{ myVar }}<br><!-- this works -->
  <button @click="myVar = 'test without this !'" type="button">
          Change text</button><!-- this works --><br>

  <button @click="this.myVar = 'test with this !'" type="button">
          Change text (not working because of 'this')</button><!-- this NOT works -->
  <br><br>
  
  {{ computedProp }} <!-- this works -->
  <br>
  {{ this.computedProp }} <!-- this works -->
  
  <br><br>
  {{ returnText() }} <!-- this works -->
  <br>
  {{ this.returnText() }} <!-- this works -->
</div>

建议是什么?

1 个答案:

答案 0 :(得分:0)

我假设v-bind的作用类似于js native'bind'函数,例如将函数绑定到另一个对象,不同于我们的上下文(在其他情况下是Vue instanse)。