陈鹏宇 发布的文章

博主最近在用 Vue 写一个无限级类型的组件,遇到了以下问题:

Vue.js 报错: Invalid prop: type check failed for prop "index". Expected String with value "7", got Number with value 7

翻译可知:index 属性类型错误,应该传入字符串7,而不是Number类型的 7

因此,解决方案:

  • 利用 JS 中的 String() 函数,将任意类型强制转换为字符串
<template>
<el-submenu v-if="data.son.length > 0" :index="String(data.id)">
    <span slot="title">{{data.cate_name}}</span>
    <template v-for="obj in data.son">
    <subMenu :data="obj"></subMenu>
    </template>
</el-submenu>
    <el-menu-item :index="String(data.id)" v-else>{{data.cate_name}}</el-menu-item>
</template>

笔者这两天在写一个前后端分离的项目(Vue.js 作为前端、ThinkPHP 做后端),遇到了使用 Axios 向后端无法传递参数的情况,以下为解决方案,记录以供下次查阅。

原先的代码如下:

import request from '@/plugin/axios'
import qs from 'qs'

export function userSearch (query) {
  return request({
    url: '/user/search',
    method: 'POST',
    params: query
  })
}

因为我们在对接口 POST 提交参数的时候,使用数组类型之前需要进行序列化操作,这个时候我们就可以使用 qs 库的 stringify 方法,进行序列化操作,并且需要提供 options,即为 arrayFormat: 'repeat'

修改后的代码如下:

import request from '@/plugin/axios'
import qs from 'qs'

export function userSearch (query) {
  return request({
    url: '/user/search',
    method: 'POST',
    params: query,
    paramsSerializer: function (params) {
      return qs.stringify(params, { arrayFormat: 'repeat' })
    }
  })
}

图片参考:

QQ截图20190815165514.png

引言:

说起与「尝鲜派 iBeta」得渊源,还是要从「尝鲜派 iBeta」的 logo 说起,当时「尝鲜派 iBeta」发起人 Sunbelife 说要创建一个能够提供 Apple 用户便利的网站,我当时负责制作「尝鲜派 iBeta」的 logo。不过后来呢,忙学业上的事情,「尝鲜派 iBeta」那块就没有管,现在大学考上了,有时间了,便加入开发组,与另外几位朋友负责开发新版本的「尝鲜派 iBeta」。

他们分别是:

  1. 0xJacky (主程序开发)
  2. Hintay(开发者)
  3. Sunbelife(创始人)
  4. Hexwell (就是我啦,负责主程序开发)

Github 的「尝鲜派 iBeta」的私库

QQ截图20190617021524.png

总之,非常荣幸能够加入「尝鲜派 iBeta」,利用我的能力为广大 Apple 用户提供便利。当然!希望「尝鲜派 iBeta」越办越好~

前言:笔者这两天在调试一个由 ThinkPHP 开发的站点,在 Windows 下部署一切没有问题,但是当部署到 Linux 系统的 ECS 上就出现了:ThinkPHP —— 找不到模板的错误。

笔者呢,也是研究了好久,其实这个错误的原因是因为 Linux 上对于大小写区分很敏感,Windows 则不然,因此,想要解决这个错误的方法也很简单。但是每个人都有不同的错误原因,所以还是需要自己排查,仔细看下报错时候输出的报错信息。

如果你不知道如何打开 ThinkPHP 的 debug 模式,你需要在你的项目入口处,加入代码:

define('APP_DEBUG',true);

解决方案:

1. 针对使用了省略方法方法来渲染页面的,例如下面的代码。
this->display();

你应该仔细检查你的方法名是否大小写是否正确,因为 ThinkPHP 会默认渲染以方法名命名的页面。简单地说,就是,你的目录下有一个文件为 index.php,那么你在 Controller 中,想要渲染这个页面,你就应该将方法像下面这么写。

function index()
{
this->display();
}

而不是像下面这么写。

function Index()
{
this->display();
}

2. 针对方法名正确,但是还是提示无法找到模板的同学,你应该仔细查看你的 Controller 文件,看看有没有在哪个地方调用了 display 方法,检查名称是否跟你目录的文件名称一致。

3. 如果还是不行,那你应该检查你的伪静态规则,检查是否设置了伪静态,如果你不会撰写伪静态,你可以去查下资料,笔者就不在这赘述了。

其它的原因也是有可能的,只不过笔者还没有遇到,如有同学遇到,欢迎评论提供解决方案。