美文网首页
imgshow组件和comment子组件之间的参数传递和点击预览

imgshow组件和comment子组件之间的参数传递和点击预览

作者: 悟空你又瘦了 | 来源:发表于2017-07-13 11:01 被阅读0次
    • 核心技术
    1.里面是两个ajax请求,获得内容和获得图片
    2.获得url里面的id参数this.imgid = this.$route.params.imgid;,可以直接拿过来用,这个还可以通过props传递给子组件
    3.中间图片实现点击某张图片的时候预览它(vue-preview)
     重点学习的是:vue-preview组件的使用(https://github.com/LS1231/vue-preview)
        使用的要求:
        1、要求我们将vue-preview组件特殊的扩展名配置到webpack.config.js中利用bable去解析es6语法
        {
            test: /vue-preview.src.*?js$/,
            loader: 'babel'
        }    
        2、这个组件中使用了 svg这种文件,那么在build/webpack.config.js中
        的url-loader配置位置,要在test后面的正则表达式中,增加svg的扩展名
        3、img标签上的class不能去掉
        4、插件目前仅支持vue2.0以上版本
        步骤:
        1、安装 vue-preview   npm i vue-preview --save
        2、在api请求回来的数据基础上,增加 h,w 属性
            item.w=300;
            item.h=300;
        3、在 img标签上
            ![](thumimg.src)
            v-for="(thumimg,index) in thums" ,遍历的时候要加上index
            其中$preview 对象就是打开预览的组件对象
            并且open方法的两个参数的意义:
            1、index:当前图片的索引
            2、thums:表示要预览的图片数组
    4.在 imageshow.vue 要使用comment.vue组件步骤:
        1、导入comment.vue组件
        2、在imageshow.vue VM对象中增加components:{comment}
        3、在imageshow.vue 的template中使用<comment artid="?"></comment>
    
    • imgshow组件
    <template>  
        <div class="tmpl">
            <!-- 1.0 实现标题 -->
            <div class="twarp">
                <h2 v-text="imgInfo.title"></h2>
                <span class="desc">
                    {{imgInfo.add_time  | datefmt}}  
                    {{imgInfo.click}}次浏览
                     分类:民生
                </span>
            </div>
    
            <!-- 2.0 9宫格缩略图 -->
            <div class="mui-content">
                <ul class="mui-table-view mui-grid-view mui-grid-9">
                    <li v-for="(thumimg,index) in thums" class="mui-table-view-cell mui-media mui-col-xs-4 mui-col-sm-3">
                        <a>
                        ![](thumimg.src)
                       </a>
                   </li>
                    
                </ul> 
            </div>
    
            <!-- 3.0 图片详情 -->
            <div class="content" v-html="imgInfo.content"></div>
    
            <!-- 4.0 评论组件 -->
            <comment :artid="imgid"></comment>
        </div>
    </template>
    <script>
    import common from '../../kits/common.js'
    import comment from '../subcom/comment.vue'
        export default{
            components:{comment},
            data(){
                return {
                    imgInfo:{},
                    imgid:0,
                    thums:[]
                }
            },
            methods:{
                getimgInfo(){
                    var url = common.apiDomain+'/api/getimageInfo/'+this.imgid;
    
                    this.$http.get(url).then(res=>{
                        this.imgInfo = res.body.message[0];
                    });
                },
                getthums(){
                    var url = common.apiDomain+'/api/getthumimages/'+this.imgid;
                    // http://ofv795nmp.bkt.clouddn.com//upload/201504/18/thumb_201504181230437111.jpg
                    
                    this.$http.get(url).then(res=>{
                        // 注意点:由于服务器返回的src属性中的值是一个图片的路径,所以要添加上图片的域名
                         res.body.message.forEach(item=>{
                            item.src = common.imgDomain + item.src;
                            item.w=300;
                            item.h=300;
                         });
    
                        this.thums = res.body.message;
                    });
                }
            },
            created(){
                this.imgid = this.$route.params.imgid;
    
                this.getimgInfo();
                this.getthums();
            }
        }
    </script>
    <style scoped>
        .twarp h2{
            color:#0094ff;
            font-size:16px;
        }
        .twarp .desc{
            color:rgba(0,0,0,0.4);
            
        }
        .twarp{
            padding:10px;
            border-bottom: 1px solid rgba(0,0,0,0.4); 
        }
        .content{
            padding:5px;
        }
        .mui-icon-home:before,
    .mui-icon-email:before,
    .mui-icon-chatbubble:before,
    .mui-icon-location:before,
    .mui-icon-search:before,
    .mui-icon-phone:before{
        content: ''
    }
    .mui-content ul{
            background-color: #fff;
        }
        .preview-img{
            height: 100px;
            width: 100px;
        }
    </style>
    

    相关文章

      网友评论

          本文标题:imgshow组件和comment子组件之间的参数传递和点击预览

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