学习记录

一个View代表一个View或ViewGroup,一个模块至少一个View
display:flex
flex-dirction:row 子布局水平布局
justify-content;center 子元素左右居中
align-items:center:子元素上下居中
padding: 10px 15px    左右10px,上下15px
border-bottom:1px #fff soild   底部边框1px颜色#fff实线
border-radius:10px 边框圆角大小
font-weight:bold 字体加粗
flex-wrap:wrap 子元素超出一行支持换行

position:relative 一般用于父元素代表相对布局
position: absolute 子元素相对绝对定位
top:-8px 位于顶部偏移父布局-8px
right:-8px  位于右边偏移父布局-8px


setTimeout(()=>{
    //延迟1s触发
}, 1000);

<text>{{item.name}}</text> : 取name值显示

列表分页:

onPullDownRefresh() {
  //触发下拉刷新
}
onReachBottom() {
  //页面触底情况会触发该方法
}

//停止下拉刷新
uni.stopPullDownRefresh();
匿名回调函数
onLoad() {
//页面初始化请求商品数据
      getGoodsList(()=>{

});
}

getGoodsList(callBack) {
  ......
  callBack && callBack() //等同于:callBack != null 调用callBack()方法
}

Item抽取:

新建components目录,新建goods-list.vue,代表一个item样式,
复制view布局和style。item需要外界传进来goods数据遍历。

item.vue
<script>
   export default {
  props: ['goods'] //使用外部导入进来的goods数据

  methods:{
    navigator() {
      //item的点击,需要回调给外部,详解https://blog.csdn.net/sisi_chen/article/details/81635216
vue子组件向父组件传值
      this.$emit('itemClick', id)
      }
  }
}
</script>

重要:Vue子组件向父组件传值(this.$emit()方法)https://blog.csdn.net/sisi_chen/article/details/81635216

index.vue
<script>
//1.导入vue文件并命名
  import goodsList  from '../../components/goods-list/goods-list.vue' //意思为导入goods-list.vue文件,命令为goodsList

//2.注册为组件,并声明标签
components: {"goods-list" : goodsList} //声明为goods-list标签,对应的组件名称是上面导入的goodsList名称

</script>
//3.在view中使用标签
<goods-list :goods="传入的数据"  @itemClick="调用方法"> </goods-list>
//上面:goods代表goods-list.vue中属性goods需要动态绑定数据,
@itemClick是item使用$emit()子组件向父组件传值
<script>
  export default {
      data() {
    return {
              goods:[] //代表提供给view使用的数据,goods代表变量名,script中逻辑请求数据赋值给goods,view中如果使用会自动绑定数据和刷新操作。
                }
        }

  //添加过滤器
filters{
    //定义一个过滤时间的方法
    formatDate(date) {
    //date传进来,返回另一个值
    return "格式化的值”;
}
}
  }
</script>
//view中使用过滤器
<text>时间:{{item.time | formatDate}}</text>

网络请求封装

export const myRequest //暴露一个myRequest方法

return new Promise():异步通过Promise去封装,并可提供回调

    // 封装get请求
    const baseUrl = "http://localhost:8082"
    export const myRequest = (options)=>{
        return new Promise((resolve,reject)=>{
            uni.request({
                method: options.method || "GET", //method为空,则默认为GET
                data: options.data || {}, //data为空,则默认为{}
                url: baseUrl+options.url,
                success(res) {
                    if(res.data.status !== 0) {
                        return uni.showToast({
                            title: '获取数据失败'
                        })
                    }
                    resolve(res)
                },
                fail(err) {
                    uni.showToast({
                        title: '获取数据失败'
                    })
                    reject(err)
                }
            })
        })
    }

//每个页面都会用到,提供给外界使用,需在main.js中定义
import { myRequest } from './util/api.js' //因为封装的方法为myRequest,{}中myRequest相当于引用方法名。
Vue.prototype.$myRuquest = myRequest //挂载再Vue全局上,类似定义为全局组件

使用方式:
const res = await this.$myRuquest({
                    url: '/api/getgoods?pageindex='+this.pageindex
})
this.goods = [...this.goods,...res.data.message]

程序员来了uni-app视频教程

<text>{{title}}</text>:数据绑定
data() {
    return {
      title: "hello world" //data相当于mode,对view提供数据
  }
}

<input :value="title" @input="change"/> 
//普通属性前加":"代表动态绑定数据
//@符号加属性代表事件

生命周期

一下为APP生命周期,相当于Application
onLaunch:初始化完成
onShow:  从后台进入前台显示,类似onResume
onHide: 从前台进入后台,类似:onPause

页面生命周期:
onLoad():  类似onCreate()
onShow(): onResume()
onReady():页面渲染完成
onHide(): onPause()
onPullDownRefresh():用户下拉刷新操作
onShareAppMessage(object):用户点击右上角分享
onPageScroll():页面滚动
onBackPress(): 监听页面返回
生命周期.png

尺寸单位

uni-app屏幕宽度固定为750 upx

数据绑定

{{表达式}}
{{student.age + 'age'}}:字符串拼接
{{student.age >= 18  ? '成年' : '未成年'}}:数据绑定中加逻辑表达式

'v-bind:组件属性名', v-bind可以省略,直接冒号+属性名
例::url='url'

事件

@click:点击
@tap: 触摸
@longpress:长按

条件渲染

v-if、v-else
<view v-if="isShow(这个是data里面提供的)">
isShow未true显示的内容
</view>
<view v-else>
isShow未false显示的内容
</view>

<view v-show="isShow">
控制该view的显隐
</view>

条件渲染

v-for:
<view v-for="item in list" :key="index"> //key=index用索引当key,也可用数据的id:item.id
      <view>姓名{{item.name}} ,年龄{{item.age}}</view>
</view>
data() {
  return {
list:[....]
}
}

arrayList.push(obj):数组尾部添加
arrayList.unshift(obj):数组头部添加

双重循环index问题:
v-for="(item, index) in list" :key="index"
v-for="(subItem, itemIndex) in item.subList"  :key="itemIndex"

跨端兼容

#ifdef
#ifndef

直接在view标签中定义style:
<view style="width:200px; height 300px;"/>

Flex布局

弹性盒状布局,伸缩元素、自动填充、自适应。
flex-direction:设置元素的排列方向
row、cloumn:水平、竖直排列

flex-wrap:使容器内的元素换行
nowrap:不换行   wrap:换行

justify-content: 主轴对齐方式
flex-start、flex-end、center、space-between、space-around

align-items:交叉轴对齐方式

order:1 排序方式,数字越小,排列在前,由小到大。

flex-grow:控制元素放大比例
flex-shrink:控制元素缩小比例
flex-basic:设置元素固定或自动控件的占比

<style>
//导入外部css样式
@import url("xxx.css")
</style>

项目

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

推荐阅读更多精彩内容

  • 什么是视图容器?视图容器就是将页面分割为独立的、不同的部分。视图容器共包含:view、scroll-view、sw...
    程小隙阅读 34,849评论 1 5
  • 目录介绍 01.遇到问题汇总 02.关于布局设置 03.基础语法总结 04.关于交互问题 06.关于回传数据 07...
    杨充211阅读 750评论 1 2
  • HTML是一种超文本标记语言 一、选择器 类选择器:.class id选择器:#id 通配选择器:*(选择所有元素...
    行走在路上的大熊阅读 410评论 0 1
  • CSS Q: HTML引入CSS的方式有哪些? A: HTML element的style属性,HTML内部sty...
    赵长安啊阅读 594评论 0 7
  • 1、v-model默认的触发条件是input事件,加了.lazy修饰符之后,v-model会在change事件触发...
    Dockerps阅读 299评论 0 2