iview 使用笔记

1、在单文件组件中如何重载iview中的样式?没法重载iview中的样式?

<style lang="sass" scoped>
    /*
        添加 scoped 后样式将被锁定在当前组件,所以没法覆盖原iview样式,
        解决方式:
            1/不使用 scoped(不推荐),
            2/再建一个 style 标签 ,vue单文件组件中是容许定义多个style标签的
    */
<style>
/*以下*/
<style lang="sass" scoped>

</style>
<style lang="sass">

</style>        

2、使用iview上传组件Upload时,须要动态改变附带的参数data及上传的路径url?但 before-upload 动态改变时,子组件中参数未改变时已执行上传操做?

iview的Upload组件文档中: before-upload 上传文件以前的钩子,参数为上传的文件,若返回 false 或者 Promise 则中止上传javascript

<template>
    <Upload
        ref="upload"
        :action="uploadUrl",
        :format="['jpg','jpeg','png','bmp','pdf']",
        :on-format-error = "handleFormatError",
        :before-upload = "handleBeforeUpload",
        :on-success = "handleSuccess",
        :on-error="handleError",
        :data="uploadData"
        >
        <div style="width: 58px;height:58px;line-height: 58px;">
            <Icon type="camera" size="20"></Icon>
        </div>
    </Upload>
</template>
<script>
    export default {
        data () {
            return {
                uploadModal: true,
                uploadData: {},
                activeUploadId: "5c2bf345-b973-4ffd-a52e-87bb9c1d2b72",
                uploadUrl: '',
            }
        },
        methods: {
            ... ...
            handleBeforeUpload (file) { /*上传前肯定上传地址*/
                let researchId = this.activeUploadId;
                this.uploadUrl = 'api?research_id=' + researchId + '&filetype=' + file.name.split('.')[1];
                this.uploadData = {
                    role: patient,
                    abc: file
                };
                let promise = new Promise((resolve) => {
                    this.$nextTick(function () {
                        resolve(true);
                    });
                });
                return promise; //经过返回一个promis对象解决
            }
            ... ...
        }
    }
</script>

 3、vue-cli构建的项目按照iview官网上的定制主题步骤,引入主题样式后报错

 ERROR  Failed to compile with 1 errors                                                                                                                                                  10:58:39 PM

 error  in ./src/assets/css/theme.less

Module build failed: 

@import "./animation/index";
@import "./components/index";
^
Can't resolve './components/index' in '/Users/linqiang/Documents/workplace/logManagement/node_modules/_iview@2.9.2@iview/src/styles'
      in /Users/linqiang/Documents/workplace/logManagement/node_modules/_iview@2.9.2@iview/src/styles/index.less (line 5, column 0)

 @ ./src/assets/css/theme.less 4:14-268 13:3-17:5 14:22-276
 @ ./src/main.js
 @ multi ./node_modules/_webpack-dev-server@2.11.2@webpack-dev-server/client?http://localhost:8080 webpack/hot/dev-server ./src/main.js

解决方案:https://github.com/iview/iview/issues/2147#issuecomment-338857856css

一、将less文件引入到main.js;html

二、在文件webpack.base.conf.js中添加.less配置vue

  resolve: {
    extensions: ['.js', '.vue', '.json','.less'],
    alias: {
      'vue$': 'vue/dist/vue.esm.js',
      '@': resolve('src'),
    }
  },

三、安装依赖java

npm install --save-dev less-loader less

 4、在使用组件时,组件定义的方法已经有默认的参数,但还需传入本身的参数,如:穿梭框中

Transfer(:data="Obj[index].transferLeft", :target-keys="Obj[index].transferRight", @on-change="handlechange(index)")

这样能接收到index,但同时也覆盖了原有参数node

on-change 选项在两栏之间转移时的回调函数 targetKeys, direction, moveKeys

解决方案:webpack

Transfer(:data="Obj[index].transferLeft", :target-keys="Obj[index].transferRight", @on-change="(value) => managedeptChange(index, value)")

 五:vue-cli2引入iview3时报错

 in ./src/assets/css/theme.less

Module build failed:

// https://github.com/ant-design/ant-motion/issues/44
.bezierEasingMixin();
^
Inline JavaScript is not enabled. Is it set in your options?
      in /Users/linqiang/Documents/workplace/explore-discovery/node_modules/_iview@3.1.1-rc.1@iview/src/styles/color/bezierEasing.less (line 110, column 0)

 @ ./src/assets/css/theme.less 4:14-271 13:3-17:5 14:22-279
 @ ./src/main.js
 @ multi ./node_modules/_webpack-dev-server@2.11.3@webpack-dev-server/client?http://localhost:8082 webpack/hot/dev-server ./src/main.js

解决方案:在 ... ... /build/utils.js中git

// https://vue-loader.vuejs.org/en/configurations/extract-css.html
  return {
    css: generateLoaders(),
    postcss: generateLoaders(),
    less: generateLoaders('less', {javascriptEnabled: true}), // 加这里
    sass: generateLoaders('sass', { indentedSyntax: true }),
    scss: generateLoaders('sass'),
    stylus: generateLoaders('stylus'),
    styl: generateLoaders('stylus')
  }
相关文章
相关标签/搜索