Tips on iView 1.0

前段时间试着用 iView 独立完成了公司的一套新系统的前端,在 @Aresn 大大的指导下还算顺利的爬了许多坑,记录一下。
iView 传送门:iView UI

问题总结

  1. <Menu> 组件的 active-key 属性用来控制当前处于激活状态的 Menu-Item (当 active-key 等于 key 的时候激活),所以应当使用双向绑定,将一个变量上去,不能使用常量�

     <Menu :active-key.sync="activeKey" theme="dark" width="auto" @on-select="selectEvent">
         <div :class="{'layout-logo-left-small' : spanLeft < 5, 'layout-logo-left-big': !spanLeft < 5}"></div>
         <Menu-item key="1" :class="{'icon-center': spanLeft < 5}">
             <Icon type="ios-navigate-outline" :size="iconSize"></Icon>
             <span class="layout-text">数据预览</span>
         </Menu-item>
         <Menu-item key="2" :class="{'icon-center': spanLeft < 5}">
             <Icon type="ios-flask-outline" :size="iconSize"></Icon>
             <span class="layout-text">数据探索</span>
         </Menu-item>
         <Menu-item key="3" :class="{'icon-center': spanLeft < 5}">
             <Icon type="ios-cloud-upload-outline" :size="iconSize"></Icon>
             <span class="layout-text">任务提交</span>
         </Menu-item>
         <Menu-item key="4" :class="{'icon-center': spanLeft < 5}">
             <Icon type="ios-paw-outline" :size="iconSize"></Icon>
             <span class="layout-text">历史记录</span>
         </Menu-item>
     </Menu>
    
  2. 在使用了 vue-router 的 SPA 中,可以使用 this.$router.go() 替代 v-link ,这样做的好处是,在改变路由之前可以做一些事情,比如修改 <Menu>active-key

      go (pathKey) {
          if (pathKey === '1') {
              this.$router.go('/preview');
          } else if (pathKey === '2') {
              this.showLayout = false; // 因为要接入一个第三方的 iFrame 所以隐藏了原有的各种功能菜单。
              this.spanRight = 24;
              this.$router.go('/zeppelin');
          } else if (pathKey === '3') {
              this.$router.go('/submit');
          } else if (pathKey === '4') {
              this.$router.go('/history');
          } else {
              this.$router.go('/index');
          }
      }
    
  3. 有时,基础布局包裹的组件需要触发路由更新,要更改当前 <Menu>active-key,可以让子组件使用 dispatch 传递自定义事件并由基础布局组件捕获,再进行相关操作。

    // child component:
    editTask () {
        this.showTaskInfo = false; // 关闭任务信息弹窗。
        this.$dispatch('edit-task'); // 进入修改页面。
    },
    
    // father component:
    events: {
       'edit-task': function() {
           this.activeKey = '3'; // 更改活动的 menu-item
           this.go ('3'); // 将路由更新为修改页面
       }
    }
    
  4. iView 用 <Modal> 包裹 <i-table> 时,要将 <Modal>:visible 使用的控制变量,用 v-if 绑定到 <i-table> 上。(Tip: iView 会在渲染 <i-table> 时计算该组件的宽度,所以 i-table 要在 data 完成加载后再被显示出来。)

    <Modal
        :visible.sync="showTaskInfo"
        @on-cancel="diselectTask"
        >
        <p slot="header">
            <Icon :style="{fontSize: 16 + 'px', marginRight: 3 + 'px'}" type="information-circled"></Icon>
            <span style="font-size: 16px">任务信息</span>
        </p>
        <div v-if="showTaskInfo">
            <i-table :columns="taskColumn" :data="taskInfo" stripe border></i-table>
        </div>
        <div slot="footer" style="text-align: center">
            <i-button :style="{width: 22 + '%'}" type="primary" size="large" @click="openLog">查看日志</i-button>
            <i-button :style="{width: 22 + '%'}" type="primary" size="large" @click="editTask">修改任务</i-button>
            <i-button :style="{width: 22 + '%'}" type="primary" size="large" @click="resubmit" :loading="resub_loading">重新开始</i-button>
            <i-button :style="{width: 22 + '%'}" type="primary" size="large" @click="killTask" :disabled="!canBeKilled" :loading="loading && canBeKilled">杀死任务</i-button>      
        </div>
    </Modal>
    
  5. 一个 view 只能同时显示一个 <Modal>,并且,一个 component/view 不能同时引入两个以上封装了 <Modal> 的 component(会导致只有第一个被引入的 component 有效),正确的做法是将该 component/view 要用到的 <Modal> 统一放在一个 component 中,再引入这个 component 。


  6. 如何避免 <Upload> 组件在选中文件后自动开启上传:

    • 使用其提供的 before-upload 钩子函数并返回 false ,上传的文件将以参数的形式传递到 before-upload 绑定的钩子函数中,在钩子函数中对文件进行操作即可。

        <Upload 
            action="//jsonplaceholder.typicode.com/posts/"
            :before-upload="beforeUploadHandler">
            <i-button type="ghost"><Icon type="upload"></Icon><span>上传文件</span></i-button>
        </Upload>
      
         beforeUploadHandler(file) {
            this.$Loading.start();
            util.uploadFile(file).then((res) => {
                if(res) {
                    this.$Loading.finish();
                    this.$Message.success('上传文件成功。');                        
                } else {
                    this.$Loading.error();
                    this.$Message.error('上传文件失败。');
                }
            });
            return false;
        },
      
      

打个广告:iView 前几天发布了基于 Vue 2 的 2.0.0 - rc5 版本,传送门:iView 2,值得一试。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269

推荐阅读更多精彩内容