Ricesgui


  • 首页

  • 标签

  • 分类

  • 归档

  • 关于

vue报错

发表于 2018-10-19 | 阅读次数:

前言


遇到在本地url可以请求,打包后报以下错的。


Uncaught (in promise) DOMException: Failed to execute ‘open’ on ‘XMLHttpRequest’: Invalid URL

遇到这种情况一定要好好反省自己写的url请求,本地代码请求接口没问题,打包上线有问题,原来是本地使用了代理可以识别,而线上的不可以识别。

解决方案:1.url前面一定要加http://
2.认真看自己的url,是否真的符合正常规则,是不是多写或少写了一个/。

Vue使用图片放大预览插件

发表于 2018-10-18 | 阅读次数:

vue项目使用vue-photo-preview插件实现点击图片放大预览和移动


介绍:该插件具有预览方法图片,全屏看图片,上一张下一张的功能

1.运行


npm install vue-photo-preview

2.项目main.js引用




// 引入图片缩放插件
import preview from ‘vue-photo-preview’
import ‘vue-photo-preview/dist/skin.css’

3.在你需要用到的vue页面的html部分引用添加preview属性即可

非常重要,需要在函数初始化时加入
mounted(){
    this.$previewRefresh()
}

在这里是运用了数组,支持后台多图片返回,建议图片使用懒加载方式

这个函数可以在需要有自适应的时候使用

由于我的图片是在elementui框架的对话框里面引用到的,一开始发现放大后图片在对话框下面显示,研究发现对话框的z-index属性一般为3000,所以我们只需要重写一下css属性就可以啦
要注意这里属性重写建议写在index.css下面,不然可能不起作用哦。

4.效果预览

在这里要重点提一个问题,就是在引用的时候,要注意你的引用步骤,当该效果没有的时候可以考虑一下是不是渲染出了问题或者在该引用组件已经渲染后再调用$previewRefresh()函数时会因为数组长度为0,没有效果。解决方法就是watch()一下你打开的对话框再进行图片渲染。

点击li列表返回列表下标

发表于 2018-10-17 | 阅读次数:

主要就是有一个已知li列表,当用户点击某一个li时,返回其所在li中的位置

思路:

代码如下:

<html>
    <head></head>
    <body>
        <ul id="list">
            <li>标签1</li>
            <li>标签2</li>
            <li>标签3</li>
            <li>标签4</li>
            <li>标签5</li>
        </ul>

    </body>
</html>

<script>
// 方法一
var oli=document.getElementsByTagName('li');  
for(var i=0; i<oli.length;i++)  
  {       
      oli[i].index=i+1;      
      oli[i].onclick=function(){     
      alert('你点击的列表的下标是:'+this.index);
        //列表下标从0开始     
                };      
     }  
// 方法二 事件托管,由父节点监听点击事件
var ul = document.getElementById('list');
var li = ul.getElementsByTagName('li');
ul.onclick = function(e){
var e = e || window.event, target = e.target || e.srcElement;
for(var s in li){
if(target == li[s]){
s = parseInt(s)+1;
alert(s);
break;
}
}
}
</script>

将url截取为json

发表于 2018-10-17 | 阅读次数:

主要就是将一个url截取成为json并在控制台输出

思路:一开始想要用正则表达式来匹配,后来想到一种更简单一点的处理方法就是利用js自带的split()处理函数,先将整串url以?分割开,取后半部分,再根据&将不同变量拆分开来,最后根据=分割开,前部分为key,后半部分为value

代码如下:

var url = "https://www.baidu.com?key1=welcome&key2=to&key3=china"
function getQuery(url) {
    if (url.indexOf("?")>-1) {
        var result = [];       
        var paraStr = url.split("?")[1];
        var para = paraStr.split("&");
        for (var i=0;i<para.length;i++){        
            var paraKey = para[i].split("=")[0];         
            var paraValue = para[i].split("=")[1];
            result.push({
                key: paraKey,
                value: paraValue
            })
        }
        console.log(result)
    }
}
getQuery(url)

思路流程:”https://www.baidu.com?key1=welcome&key2=to&key3=china"

==>key1=welcome&key2=to&key3=china
==>key1=welcome key2=to key3=china
==>[{key: key1, value: welcome},{key: key2,value: to},{key: key3,value: china}]

this.$emit带参数传递

发表于 2018-10-08 | 阅读次数:

前言

最近在做一个关于openlayer地图的项目,但是是基于Vue项目的基础上的,我在获取经纬度的时候想要将子组件获得的经纬度信息传递给父组件,然后将他传回来的值赋给我的input框里。废话不多说,赶紧来记录一下

子组件中this.$emit(‘对应的名字’, 参数)

代码如下:

1
2
3
4
<button v-for="(btn, $index) in btns" :key="btn + $index" @click="onClickBtn(btn)"> </button>
onClickBtn() {
this.$emit('click-btn', btn);
}

阅读全文 »

正则表达式的两种创建方式

发表于 2018-10-08 | 阅读次数:

前言


最近做地图时遇到输入经纬度,这时候需要前端对输入的经纬度进行校验,所以写了个正则表达式

隐式创建

var reg = /正则表达式/

显示创建


var reg = new RegExp(‘正则表达式’)

一下为经纬度的正则表达式的校验:

longitude: [
      { required: true, message: '请输入经度', trigger: 'blur' },
      {
        validator: (rule, value, callback) => {     
          if (value.length === 0) {
            callback(new Error('经度范围:-180.000000~180.000000'))
          } else {  
            var reg = /^[-+]?(180(\.0{0,6})?|([0-9]|[1-9][0-9]|1[0-7][0-9]|0{1,3})(\.\d{0,6})?)$/          
            if (!reg.test(value)) {
              callback(new Error('经度范围:-180.000000~180.000000'))
            } else {
              callback()
            }             
          }
        }
      }
    ],
    latitude: [
      { required: true, message: '请输入纬度', trigger: 'blur' },
      {
        validator: (rule, value, callback) => { 
          if (value.length === 0) {
            callback(new Error('纬度范围:-90.000000~90.000000'))
          } else {                
            var reg = /^-?((0|[1-8]?[0-9]?)(([.][0-9]{1,6})?)|90(([.][0]{1,6})?))$/
            if (!reg.test(value)) {
              callback(new Error('纬度范围:-90.000000~90.000000'))
            } else {
              callback()
            }
          }
        }
      }
    ]

安装ngnix报错

发表于 2018-10-07 | 阅读次数:

前言

最近想搭一下后台开发环境,就装了一些软件,在装nginx的时候遇到下面的一个问题。No mapping for the Unicode character exists in the target multi-byte code page.


解决方法:将你的目录下中文改掉即可。

阅读全文 »

Vue+ElementUI实现对话框父子组件通讯

发表于 2018-09-15 | 阅读次数:

前言


在使用ElementUI官网的对话框时在同一个页面调用没毛病,但是想把它独立出来成为一个可重复用的组件的时候,就会发现弹出有问题,即使我们已经在子组件里设置了一个props监听状态。可是实现的效果如图,会造成框架自身带有的右上角×回调有问题,如下图:


报错,在子组件里修改了父组件的值,在这里我们应该给父组件提供一个信号,让父组件去修改子组件的值才行
在vue2.0中子组件中不能修改父组件的状态,否则在控制台中会报错。

解决方法:

在子组件里添加回调函数监听:before-close="cancelRegister"

在父组件里添加监听v-if="addrulesonoff",
当需要关闭对话框时,在cancelRegister函数里修改addrulesonoff的状态并将其传给父组件,让父组件去修改子组件的props值就可以啦

详细代码:

阅读全文 »

路由跳转

发表于 2018-09-13 | 阅读次数:

前言


搭建网站时,一般都会遇到页面跳转需要传递参数的问题,我研究了一下,总结出以下三种方法

  • 使用路由带参数传递数据

  • A页面代码

    handleHistory(e, rowData) {
        this.ruleid = rowData.id
        this.$router.push({
          name: 'AlarmHistory',
          params: {       
            ruleid: this.ruleid
          }
        })
    },
    1.name  -> 是要跳转的路由路径,在router文件里配置,也可以用path进行路径导航,但是path不能进行参数传递
    2.params -> 是要携带的参数,参数形式为 key: value 若参数数目过多时,建议考虑本地存储
    3.参数也可以采用query ,但是这个参数会显示在url上,容易被误改导致出错。通过query传递参数,页面刷新后,数据不会消失。但是params刷新后会消失
    

    B页面代码

    created() {
    this.ruleid = this.$route.params.ruleid
    this.selectHistoryByPageList(this.currentPage, this.pageSize, this.ruleid)
      },
    
    阅读全文 »

    快速入门openlayer

    发表于 2018-09-12 | 阅读次数:

    前言


    背景:最近在做的一个项目需要接触到地图,所以了解到了OpenLayer,接下来让我们从头开始根据官方文档来运行一个简单的地图啦(讲真,全英文档看的有点犯困)


    以下操作是基于你的电脑已经安装好vue搭建环境的,如果还没有,推荐看下面这篇文章
    https://ricesgui.github.io/2018/09/11/%E4%BB%8E%E9%9B%B6%E6%90%AD%E5%BB%BA%E4%B8%80%E4%B8%AAvue%E9%A1%B9%E7%9B%AE/
    官方文档的操作是建立在一个空项目的基础上,所以我们先来搭建一个空项目先啦!官方文档:http://openlayers.org/en/latest/doc/tutorials/bundle.html

    首先

    vue init webpack testol
    
    阅读全文 »
    1…345…7

    Ricesgui

    做一个积极向上的程序员

    65 日志
    1 分类
    22 标签
    GitHub E-Mail CSDN
    Friends
    • 楷爷
    • 啊维
    • 烧饼
    • 权工
    • Ayiiii
    • 泉总
    © 2018 — 2019 Ricesgui
    由 Hexo 强力驱动
    |
    主题 — NexT.Pisces v5.1.4
    本站总访问量 次     本站访客数人次