微信小程序转uni-app之基础语法(组件)

参考:从其他项目转uniapp

1. 视图容器

1.1 view

(1)eg1

<view class="artList">
    <block v-for="(item,index) in artList" :key="index">
        <view class="item" v-if="item.type == 'image'">
            <image :src="item.content" :data-index="index" mode="widthFix" @tap="removeImg"/>
        </view>
        <view class="item" v-if="item.type=='text'">
            <textarea :value="item.content" placeholder="" v-model="artList[index].content"></textarea>
            <view :data-index="index" class="deleteText" @tap="deleteText">删除</view>
        </view>
    </block>
</view>

(2)eg2

<!-- 提交按钮 -->
<view class="submitNow" v-if="artList.length > 0" @tap="submitNow">编辑文章</view>

(3)eg3

<view style="height:50upx;"></view>

(4)eg4

<!-- 文章内容区 -->
        <view class="grace-news-list">
            <block v-for="(item,index) in artList" :key="index">
                <!-- 一张图 -->
                <navigator v-if="item.art_content.length < 3" open-type="navigate" :url="'../info/info?artid=' + item.art_id">
                    <view class="grace-news-list-img-news">
                        <view class="grace-news-list-title-main">{{item.art_title}}</view>
                        <view class="grace-news-list-img-big">
                            <image :src="item.art_content[0]" mode="widthFix"></image>
                        </view>
                    </view>
                </navigator>
                <!-- 三张图 -->
                <navigator v-if="item.art_content.length >= 3" :url="'../info/info?artid=' + item.art_id">
                    <view class="grace-news-list-img-news">
                        <view class="grace-news-list-title-main">{{item.art_title}}</view>
                        <view class="grace-news-list-imgs">
                            <view class="imgs"><image :src="item.art_content[0]" mode="widthFix"></image></view>
                            <view class="imgs"><image :src="item.art_content[1]" mode="widthFix"></image></view>
                            <view class="imgs"><image :src="item.art_content[2]" mode="widthFix"></image></view>
                        </view>
                    </view>
                </navigator>
            </block>
        </view>

(5)eg5

<view class='item' v-for="(item,index) in orderList" :key="key" v-for-item="item" v-for-index="index" @tap='bindViewDetail' data-machine-sn="item.sn">
    <icon class='iconfont uc-liebiao'></icon>
    <view class='item-name'>
        <view class='machine-name'>{{item.name}}</view>
        <view class='machine-sn'>{{item.sn}}</view>
    </view>
    <view class='item-num'>{{item.number}}</view>
</view>

改为:

<view class='item' v-for="(item,index) in orderList" :key="key" @tap='bindViewDetail' :data-machine-sn="item.sn">
    <icon class='iconfont uc-liebiao'></icon>
    <view class='item-name'>
        <view class='machine-name'>{{item.name}}</view>
        <view class='machine-sn'>{{item.sn}}</view>
    </view>
        <view class='item-num'>{{item.number}}</view>
</view>

(6)eg6

<view class="btn-view">
  <view class="btn-view-con" wx:for="{{btn_arr}}" wx:key="{{index}}" wx:if="{{userInfo.is_root=='1'?true:index=='1'?false:true}}">
    <view class="circle_view_con">
      <view class="circle_view" style="width:{{windowWidth*0.5/3}}px;height:{{windowWidth*0.5/3}}px;border-radius:50%;margin:{{windowWidth*0.25/3-2}}px;margin-bottom:{{windowWidth*0.1/3}}px;"  bindtap="{{item.bindthing}}" >
        <image src="{{item.img_src}}"></image>
      </view>
    </view>
    <text>{{item.text}}</text>
  </view>
</view>

this.setData({
      btn_arr: [{
        bindthing: "switchTo",
        img_src: "/images/my/fengrenji.png",
        text: this.data.T_D.machine
      }, {
        bindthing: "navigatorToStaffPage",
        img_src: "/images/my/users.png",
        text: this.data.T_D.staff
      }, {
        bindthing: "",
        img_src: "/images/my/jk_service.png",
        text: this.data.T_D.service
      }]
    });

switchTo:function(){
    wx.switchTab({
      url: '../machine/index' 
    }) 
  },
  navigatorToStaffPage: function () {
    wx.navigateTo({
      url: "../employee/index"
    })
  },

改为:

<template>
    <view>
<view class="btn-view">
            <view class="btn-view-con" v-for="(item,index) in btn_arr" :key="index" v-if="userInfo.is_root == 1 ? true : index == '1' ? false : true">
                <view class="circle_view_con">
                    <view class="circle_view" :style="{'width':(windowWidth*0.5/3)+'px','height': (windowWidth*0.5/3)+'px','margin':(windowWidth*0.25/3-2)+'px','margin-bpttom': (windowWidth*0.1/3)+'px'}" @tap="routingJump(index)">
                        <image :src="item.img_src"></image>
                    </view>
                </view>
                <text>{{item.text}}</text>
            </view>
        </view>
    </view>
</template>

<script>
export default {
    data() {
        return {
                    btn_arr : [{
                //bindthing : "switchTo",
                img_src : "/static/my/fengrenji.png",
                text : "text_machine"
            },
            {
                //bindthing : "navigatorToStaffPage",
                img_src : "/static/my/users.png",
                text : "text_staff"
            },
            {
                //bindthing : "",
                img_src : "/static/my/jk_service.png",
                text : "text_service"
            }]
                };
    },
  methods: {
    routingJump:function(index){
            if (index == "0") {
                console.log("界面跳转至机器主页");
                uni.switchTab({
                    url:'/pages/machine/machine'//机器主页
                })
            } else if (index == "1") {
                console.log("界面跳转至员工界面");
                uni.navigateTo({
                    url:'/pages/employee/employee'//员工界面
                })
            }
            
        },
  }
}
</script>

1.2 scroll-view

(1)eg1

<!-- 通过点击方式(选项卡的方式代码负责且应用卡)切换分类(高效简单)  掌握css动态样式追加小技巧 -->
<view class="grace-header-cate">
    <scroll-view class="grace-tab-title grace-center" scroll-x="true" id="grace-tab-title">
        <view v-for="(cate,index) in categories" :key="index" :data-cateid="cate.cateId" :data-index="index" 
            :class="[cateCurrentIndex == index ? 'grace-tab-current' : '']" @tap="tabChange">{{cate.name}}
        </view>
    </scroll-view>
</view>

2. 基础内容

2.1 icon

请参考uni-app组件使用注意中的icon的使用说明部分。

2.2 text

3. 表单组件

3.1 button

<button type="primary" form-type="submit">添加</button>

3.3 form

(1)eg1

<!-- 输入区 -->
<form @submit="submit">
    <view class="inputArea">
        <view class="addImg" @tap="addImg">+图片</view>
            <view class="addText">
                <textarea name="artText" maxlength="-1" v-model="inputContent" placeholder="请输入文本"></textarea>
                <button type="primary" form-type="submit">添加</button>
            </view>
    </view>
</form>

3.4 input

  • value :输入框的初始内容
  • placeholder :输入框为空时占位符(引用国际化文本问题)
  • name : 该属性的作用,uni-app官网无该属性
  • v-model :动态绑定数据
  • @input:当键盘输入时,触发input事件,event.detail = {value}
  • @blur:输入框失去焦点时触发,event.detail = {value: value}
    (1)eg1
<input type="text" v-model="title" placeholder="请输入标题"/>

(2)eg2

<input type="text" class="weui-search-bar__input" :placeholder="T_D.keyword" placeholder-style="color:#e2e2e2" v-model="keyword"/>

(3)eg3

<input type="text" class="weui-search-bar__input" :placeholder="T_D.keyword" v-model="keyword" @blur="inputBlur" @input="inputTyping" />
<view class="weui-icon-clear" v-if="keyword.length > 0" @tap="clearInput">
    <icon type="clear" size="14"></icon>
</view>

(4)eg4
小程序:

<view class="weui-cell__bd">
     <input class="weui-input" type="text" placeholder="{{T_D.pleaseEnterGroupName}}" name="name" value="{{name}}">{{name}}</input>
 </view>

修改语法:

<view class="weui-cell__bd">
    <input class="weui-input" type="text" :placeholder="T_D.pleaseEnterGroupName" name="name" :value="name">{{name}}</input>
</view>

备注:input 为单标签,值只能写在里面.继续修改:

<view class="weui-cell__bd">
    <input class="weui-input" type="text" :placeholder="T_D.pleaseEnterGroupName" name="name" :value="name"></input>
</view>

双向绑定:v-model和:value的效果一致.

<view class="weui-cell__bd">
    <input class="weui-input" type="text" :placeholder="T_D.pleaseEnterGroupName" name="name" v-model="name"></input>
</view>

3.6 picker

  • mode :
  • :range :mode为 selector 或 multiSelector 时,range 有效
  • :value :value 的值表示选择了 range 中的第几个(下标从 0 开始)
  • @change :value 改变时触发 change 事件,event.detail = {value: value}
  • :range-key :当 range 是一个 Array 时,通过 range-key 来指定 Object 中 key 的值作为选择器显示内容
    (1)eg1
<picker @change="bindPickerChange" :value="index" :range="array">
        <view class="uni-input">{{array[index]}}</view>
</picker>

(2)eg2

<!-- 选择分类 -->
<view class="art-cate">
    <view>文章分类</view>
    <view class="">
        <picker mode="selector" :range="caties" @change="cateChange">
            <view>{{caties[currentCateIndex]}}</view>
        </picker>
    </view>
</view>

3.6 picker-view

(1)eg1

<modal title="{{T_D.pleaseChoosePosition}}" hidden="{{modalHidden}}" confirm-text="{{T_D.confirm}}" cancel-text="{{T_D.cancel}}" bindconfirm="modalBindaconfirm" bindcancel="modalBindcancel">
       <picker-view indicator-style="height: 50px;border-top:1px solid green;border-bottom:1px solid green;" style="width: 100%; height: 200px;text-align:center;" range="{{positionArray}}" value="{{value}}" bindchange="bindChange">
              <picker-view-column>
                      <view wx:for="{{positionArray}}" wx:key="{{item.id}}" style="line-height: 50px">{{item.text}}</view>
              </picker-view-column>
      </picker-view>
</modal>

改为:

<modal :title="T_D.pleaseChoosePosition" :hidden="modalHidden" :confirm-text="T_D.confirm" :cancel-text="T_D.cancel" @confirm="modalBindaconfirm" @cancel="modalBindcancel">
    <picker-view  indicator-style="height: 50px;border-top:1px solid green;border-bottom:1px solid green;" style="width: 100%; height: 200px;text-align:center;" :value="value" @change="bindChange">
        <picker-view-column>
            <view v-for="(item,index) in positionArray" :key="item.id" style="line-height: 50px">{{item.text}}</view>
        </picker-view-column>
    </picker-view>
</modal>

备注:语法修改完成后,运行时列表内容不显示,只有一个空的列表架子.
modify1:

<modal :title="T_D.pleaseChoosePosition" :hidden="modalHidden" :confirm-text="T_D.confirm" :cancel-text="T_D.cancel" @confirm="modalBindaconfirm" @cancel="modalBindcancel">
    <picker-view  indicator-style="height: 50px;border-top:1px solid green;border-bottom:1px solid green;" style="width: 100%; height: 200px;text-align:center;" :value="value" @change="bindChange">
        <picker-view-column>
            <view class="item" v-for="(item,index) in positionArray" :key="item.id">{{item.text}}</view>
        </picker-view-column>
    </picker-view>
</modal>
.item{
    line-height: 50px;
    height:50px !important;
}

备注:style提取出来后,列表内容成功显示,但change事件异常,列表无法正常滑动.
modify2:

<modal :title="T_D.pleaseChoosePosition" :hidden="modalHidden" :confirm-text="T_D.confirm" :cancel-text="T_D.cancel" @confirm="modalBindaconfirm" @cancel="modalBindcancel">
    <picker-view v-if="!modalHidden" indicator-style="height: 50px;border-top:1px solid green;border-bottom:1px solid green;" style="width: 100%; height: 200px;text-align:center;" :value="value" @change="bindChange">
        <picker-view-column>
            <view class="item" v-for="(item,index) in positionArray" :key="item.id" style="line-height: 50px">{{item.text}}</view>
        </picker-view-column>
    </picker-view>
</modal>

注意:添加 v-if="!modalHidden" 所有问题都解决.

3.11 textarea

<textarea :value="item.content" placeholder="" v-model="artList[index].content"></textarea>
<textarea name="artText" maxlength="-1" v-model="inputContent" placeholder="请输入文本"></textarea>

4. 导航-navigator

(1)eg1

<!-- 文章内容区 -->
        <view class="grace-news-list">
            <block v-for="(item,index) in artList" :key="index">
                <!-- 一张图 -->
                <navigator v-if="item.art_content.length < 3" open-type="navigate" :url="'../info/info?artid=' + item.art_id">
                    <view class="grace-news-list-img-news">
                        <view class="grace-news-list-title-main">{{item.art_title}}</view>
                        <view class="grace-news-list-img-big">
                            <image :src="item.art_content[0]" mode="widthFix"></image>
                        </view>
                    </view>
                </navigator>
                <!-- 三张图 -->
                <navigator v-if="item.art_content.length >= 3" :url="'../info/info?artid=' + item.art_id">
                    <view class="grace-news-list-img-news">
                        <view class="grace-news-list-title-main">{{item.art_title}}</view>
                        <view class="grace-news-list-imgs">
                            <view class="imgs"><image :src="item.art_content[0]" mode="widthFix"></image></view>
                            <view class="imgs"><image :src="item.art_content[1]" mode="widthFix"></image></view>
                            <view class="imgs"><image :src="item.art_content[2]" mode="widthFix"></image></view>
                        </view>
                    </view>
                </navigator>
            </block>
        </view>

5. 媒体组件

5.3 image

  • src:图片资源地址
  • mode:图片裁剪、缩放的模式
  • lazy-load:图片懒加载
    (1)eg1
<image :src="item.content" :data-index="index" mode="widthFix" @tap="removeImg"/>

(2)eg2

<!-- 文章内容区 -->
        <view class="grace-news-list">
            <block v-for="(item,index) in artList" :key="index">
                <!-- 一张图 -->
                <navigator v-if="item.art_content.length < 3" open-type="navigate" :url="'../info/info?artid=' + item.art_id">
                    <view class="grace-news-list-img-news">
                        <view class="grace-news-list-title-main">{{item.art_title}}</view>
                        <view class="grace-news-list-img-big">
                            <image :src="item.art_content[0]" mode="widthFix"></image>
                        </view>
                    </view>
                </navigator>
                <!-- 三张图 -->
                <navigator v-if="item.art_content.length >= 3" :url="'../info/info?artid=' + item.art_id">
                    <view class="grace-news-list-img-news">
                        <view class="grace-news-list-title-main">{{item.art_title}}</view>
                        <view class="grace-news-list-imgs">
                            <view class="imgs"><image :src="item.art_content[0]" mode="widthFix"></image></view>
                            <view class="imgs"><image :src="item.art_content[1]" mode="widthFix"></image></view>
                            <view class="imgs"><image :src="item.art_content[2]" mode="widthFix"></image></view>
                        </view>
                    </view>
                </navigator>
            </block>
        </view>

6. 进度条-progress

<view class="weui-progress">
       <view class="weui-progress__bar">
              <progress percent="{{item.use_time}}" stroke-width="3" />
        </view>
 </view>

修改语法:

<view class="weui-progress">
    <view class="weui-progress__bar">
        <progress :percent="item.use_time" stroke-width="3" />
    </view>
</view>

其他

注意事项.PNG

可参考小程序转uni-app语法差异

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

推荐阅读更多精彩内容