美文网首页
vue,你知道却没用过的技巧

vue,你知道却没用过的技巧

作者: Biao_349d | 来源:发表于2019-09-16 18:38 被阅读0次

render

问题: 在element-ui中,table可以使用render这个方法,那么这个方法是怎么实现的? 我们可以不可以这样使用??
回答: 当然可以了, 以下是实现步骤:

  1. 新建文件expand.js
export default {
  name: 'expand',
  functional: true,
  props: {
    row: Object,
    render: Function,
    index: Number,
    column: {
      type: Object,
      default: null
    }
  },
  render: (h, ctx) => {
    const params = {
      row: ctx.props.row,
      index: ctx.props.index
    }
    if (ctx.props.column) params.column = ctx.props.column
    return ctx.props.render && ctx.props.render(h, params)
  }
}

  1. 新建component.vue
<div v-if="item.render">
              <Expand :row="row" :render="item.render"></Expand>
</div>
import Expand from './expand.js'
export default {
  components: { Expand },
  data() {
    return {
      row: {
        key: 'key',
        title: "title",
      },
      item: {
           render: (h, params) => {
            const { row, index } = params;
            return h('a-col', {
                  attrs: {
                    'data-json': JSON.stringify(row),
                    'data-index': index,
                    span: 12
                  },
                  domProps: {
                    innerHTML: item.departmentName
                  }
                });
        }
      }
    }
  }
}

v-model

常常看见组件里面使用v-model,但是不知道他是怎么回事。
其实,百度一吓你就知道。

注意以下几点:
props.value。
this.$emit('input', value);
这两个是实现v-model的基础。

ps: 额外知识点
attrs可以获得组件内任何传递过来的参数(自动去掉已经在props里面建立的属性)listeners 获取组件内传递过来的事件。

<template>
  <div>
    <el-input
        type="textarea"
        class="use-textarea"
        :rows="rows"
        :maxlength="maxlength"
        :value="value"
        v-bind="$attrs"
        v-on="$listeners"
        :placeholder="placeholder"
        @input="value => handleInput(value)">
      </el-input>
      <span class="user-textarea-count" v-if="maxlength > 0">{{value.length}}/{{ maxlength }}</span>
  </div>
</template>
<script>
export default {
  name: 'textarea-components',
  data () {
    return {};
  },
  props: {
    maxlength: {
      type: [Number, String],
      default: 0,
    },
    value: {
      type: [String, Number],
      default: '',
    },
    rows: {
      type: [String, Number],
      default: 3,
    },
    placeholder: {
      type: String,
      default: '',
    },
  },
  methods: {
    handleInput (value) {
      this.$emit('input', value);
    },
  },
};
</script>
<style lang='less' scoped>
  /deep/ .use-textarea{
    textarea{
      resize: none;
    }
  }
  .user-textarea-count{
    position: absolute;
    bottom: 10px;
    right: 10px;
    opacity: 0.7;
    font-family: PingFangSC-Regular;
    font-size: 14px;
    color: #919EAB;
    letter-spacing: 0;
    line-height: 22px;
  }
</style>

相关文章

  • vue,你知道却没用过的技巧

    render 问题: 在element-ui中,table可以使用render这个方法,那么这个方法是怎么实现的...

  • 10个Vue开发技巧

    参考文章:10个Vue开发技巧 一、路由参数解耦 知道这个写法,但是没有使用过,可参考笔记vue-router五。...

  • Vuex是什么

    如果你之前使用过vue.js,你一定知道在vue中各个组件之间传值的痛苦,在vue中我们可以使用vuex来保存我们...

  • 看完学会Vuex

    如果你之前使用过vue.js,你一定知道在vue中各个组件之间传值的痛苦,在vue中我们可以使用vuex来保存我们...

  • 5分钟带你入门vuex(vue状态管理)

    如果你之前使用过vue.js,你一定知道在vue中各个组件之间传值的痛苦,在vue中我们可以使用vuex来保存我们...

  • 快速入门Vuex(Vue状态管理)

    如果你之前使用过vue.js,你一定知道在vue中各个组件之间传值的痛苦,在vue中我们可以使用vuex来保存我们...

  • 1、5分钟带你入门vuex(vuex状态管理)

    如果你之前使用过vue.js,你一定知道在vue中各个组件之间传值的痛苦,在vue中我们可以使用vuex来保存我们...

  • 一文让你彻底弄懂 “vue-style-loader” 跟 “s

    简介 用过 vue-cli 脚手架搭建 vue 项目都知道,vue-cli 中内置了 vue-style-load...

  • JS原生数据绑定原理

    用过vue的人都知道,vue有一个特别好用的数据绑定,只要绑定了,你只要改变了这个数据,页面也会跟着渲染。其实原生...

  • Vue计算属性简析

    Vue Computed Vue开发人员必然使用过计算属性(Computed Properties):你可以像绑定...

网友评论

      本文标题:vue,你知道却没用过的技巧

      本文链接:https://www.haomeiwen.com/subject/croxuctx.html