码迷,mamicode.com
首页 > 其他好文 > 详细

vue-10-混合

时间:2017-10-09 12:03:21      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:plugins   method   函数   一个   ext   style   模板   create   stat   

混合对象可以包含任意组件选项,

// 定义一个混合对象
var myMixin = {
  created: function () {
    this.hello()
  },
  methods: {
    hello: function () {
      console.log(hello from mixin!)
    }
  }
}
// 定义一个使用混合对象的组件
var Component = Vue.extend({
  mixins: [myMixin]
})

//创建实例
var component = new Component() // => "hello from mixin!"

 选项合并:同名钩子函数都将被调用,混合对象的钩子将在组件自身钩子之前调用 

var mixin = {
  created: function () {
    console.log(混合对象的钩子被调用)
  }
}

new Vue({
  mixins: [mixin],
  created: function () {
    console.log(组件钩子被调用)
  }
})

值为对象的选项,被混合为同一个对象。两个对象键名冲突时,取组件对象的键值对,Vue.extend() 也使用同样的策略进行合并

var mixin = {
  methods: {
    conflicting: function () {
      console.log(from mixin)
    }
  }
}

var vm = new Vue({
  mixins: [mixin],
  methods: {
    conflicting: function () {
      console.log(from self)
    }
  }
})
vm.conflicting() // => "from self"

全局混合:

//会影响到每个单独创建的 Vue 实例 (包括第三方模板),可以将其用作 Plugins 以避免产生重复应用

Vue.mixin({
  created: function () {
    var myOption = this.$options.myOption
    if (myOption) {
      console.log(myOption)
    }
  }
})
new Vue({
  myOption: hello!
})

自定义选项合并策略

Vue.config.optionMergeStrategies.myOption = function (toVal, fromVal) {
  // return mergedVal
}

//大多数时候使用methods的合并策略
var strategies = Vue.config.optionMergeStrategies
strategies.myOption = strategies.methods


//使用computed的合并策略
const merge = Vue.config.optionMergeStrategies.computed
Vue.config.optionMergeStrategies.vuex = function (toVal, fromVal) {
  if (!toVal) return fromVal
  if (!fromVal) return toVal
  return {
    getters: merge(toVal.getters, fromVal.getters),
    state: merge(toVal.state, fromVal.state),
    actions: merge(toVal.actions, fromVal.actions)
  }
}

 

vue-10-混合

标签:plugins   method   函数   一个   ext   style   模板   create   stat   

原文地址:http://www.cnblogs.com/avidya/p/7640350.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!