diff --git a/src/components/cascader/cascader.vue b/src/components/cascader/cascader.vue
index 95285c9..9f3bceb 100644
--- a/src/components/cascader/cascader.vue
+++ b/src/components/cascader/cascader.vue
@@ -1,14 +1,17 @@
 <template>
     <div :class="classes" v-clickoutside="handleClose">
-        <i-input
-            readonly
-            :disabled="disabled"
-            :value.sync="displayRender"
-            :size="size"
-            :placeholder="placeholder"
-            @on-focus="onFocus"></i-input>
-        <Icon type="ios-close" :class="[prefixCls + '-arrow']" v-show="showCloseIcon" @click.stop="clearSelect"></Icon>
-        <Icon type="arrow-down-b" :class="[prefixCls + '-arrow']"></Icon>
+        <div :class="[prefixCls + '-rel']" @click="toggleOpen">
+            <slot>
+                <i-input
+                    readonly
+                    :disabled="disabled"
+                    :value.sync="displayRender"
+                    :size="size"
+                    :placeholder="placeholder"></i-input>
+                <Icon type="ios-close" :class="[prefixCls + '-arrow']" v-show="showCloseIcon" @click.stop="clearSelect"></Icon>
+                <Icon type="arrow-down-b" :class="[prefixCls + '-arrow']"></Icon>
+            </slot>
+        </div>
         <Dropdown v-show="visible" transition="slide-up">
             <div>
                 <Caspanel
@@ -125,6 +128,13 @@
             handleClose () {
                 this.visible = false;
             },
+            toggleOpen () {
+                if (this.visible) {
+                    this.handleClose();
+                } else {
+                    this.onFocus();
+                }
+            },
             onFocus () {
                 this.visible = true;
                 if (!this.value.length) {
diff --git a/src/styles/components/cascader.less b/src/styles/components/cascader.less
index 9e387b5..a6a79d5 100644
--- a/src/styles/components/cascader.less
+++ b/src/styles/components/cascader.less
@@ -2,9 +2,13 @@
 @cascader-item-prefix-cls: ~"@{css-prefix}cascader-menu-item";
 
 .@{cascader-prefix-cls} {
-    position: relative;
+    //position: relative;
     line-height: normal;
 
+    &-rel{
+        position: relative;
+    }
+
     .@{css-prefix}input{
         display: block;
         cursor: pointer;
diff --git a/test/routers/cascader.vue b/test/routers/cascader.vue
index d73eb94..eb45d84 100644
--- a/test/routers/cascader.vue
+++ b/test/routers/cascader.vue
@@ -1,72 +1,67 @@
 <template>
-    <Cascader :data="data" :value.sync="value" change-on-select></Cascader>
+    {{ text }}
+    <Cascader :data="data" @on-change="handleChange">
+        <a href="javascript:void(0)">选择</a>
+    </Cascader>
 </template>
 <script>
     export default {
         data () {
             return {
-                value: [],
-                data: []
+                text: '未选择',
+                data: [{
+                    value: 'beijing',
+                    label: '北京',
+                    children: [
+                        {
+                            value: 'gugong',
+                            label: '故宫'
+                        },
+                        {
+                            value: 'tiantan',
+                            label: '天坛'
+                        },
+                        {
+                            value: 'wangfujing',
+                            label: '王府井'
+                        }
+                    ]
+                }, {
+                    value: 'jiangsu',
+                    label: '江苏',
+                    children: [
+                        {
+                            value: 'nanjing',
+                            label: '南京',
+                            children: [
+                                {
+                                    value: 'fuzimiao',
+                                    label: '夫子庙',
+                                }
+                            ]
+                        },
+                        {
+                            value: 'suzhou',
+                            label: '苏州',
+                            children: [
+                                {
+                                    value: 'zhuozhengyuan',
+                                    label: '拙政园',
+                                },
+                                {
+                                    value: 'shizilin',
+                                    label: '狮子林',
+                                }
+                            ]
+                        }
+                    ],
+                }]
             }
         },
         methods: {
-            updateData () {
-                setTimeout(() => {
-                    this.data = [{
-                        value: 'beijing',
-                        label: '北京',
-                        children: [
-                            {
-                                value: 'gugong',
-                                label: '故宫'
-                            },
-                            {
-                                value: 'tiantan',
-                                label: '天坛'
-                            },
-                            {
-                                value: 'wangfujing',
-                                label: '王府井'
-                            }
-                        ]
-                    }, {
-                        value: 'jiangsu',
-                        label: '江苏',
-                        children: [
-                            {
-                                value: 'nanjing',
-                                label: '南京',
-                                children: [
-                                    {
-                                        value: 'fuzimiao',
-                                        label: '夫子庙'
-                                    }
-                                ]
-                            },
-                            {
-                                value: 'suzhou',
-                                label: '苏州',
-                                children: [
-                                    {
-                                        value: 'zhuozhengyuan',
-                                        label: '拙政园'
-                                    },
-                                    {
-                                        value: 'shizilin',
-                                        label: '狮子林'
-                                    }
-                                ]
-                            }
-                        ]
-                    }];
-                    setTimeout(() => {
-                        this.value = ['beijing', 'tiantan'];
-                    }, 1000);
-                }, 1000);
+            handleChange (value, selectedData) {
+                this.text = selectedData.map(o => o.label).join(', ');
             }
-        },
-        ready () {
-            this.updateData();
         }
     }
 </script>
--
libgit2 0.21.4