vue methods中一個方法調用另一個方法


Vuejs中methods中的互相調用

如一下的代碼,想要在 test3 中調用 test2 的代碼。

new Vue({
  el: '#app',
  data: {
    test: 'test',
  },
  methods: {
    test1: function() {
      alert(this.test)
    },
    test2: function() {
      alert("this is test2")
      alert(this.test)
    },
    test3: function() {
      this.test2();
      // 
    }
  }
})

可以嘗試methods中的function中的this指向vue實例,沒有任何的this綁定,所以肯定訪問不到。

this.$options.methods.test2.bind(this)();

 這是vue的調用方式

/**
 * Setup instance methods. Methods must be bound to the
 * instance since they might be passed down as a prop to
 * child components.
 */
Vue.prototype._initMethods = function() {
  var methods = this.$options.methods
  if (methods) {
    for (var key in methods) {
      this[key] = bind(methods[key], this)
    }
  }
}

function bind(fn, ctx) {
  return function(a) {
    var l = arguments.length
    return l ? l > 1 ? fn.apply(ctx, arguments) : fn.call(ctx, a) : fn.call(ctx)
  }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM