草庐IT

【uni-app】uniapp如何实现左滑删除以及改造uni-ui中的swiperAction

鱼子酱酱酱 2023-04-05 原文

左滑删除 或者 置顶之类的功能我们经常要实现,类似于微信的删除聊天框的结构 我就不贴图了

1-如何在uniapp中实现左滑删除

我使用的是uni-ui中的swiperAction 不得不说 性能还是不错的。大家想自己手动封装这个框架也是可以的,可以下载下来源码看看人家的实现思路,在h5和小程序上主要就是使用touchstart和touchend来监控的

插件地址:uni-swipe-action 滑动操作 - DCloud 插件市场

文档地址:action文档

代码参考:这里演示的是最常用的 可以去官网看看其他内容

<uni-swipe-action>
    //right-options 右滑出现的内容。left-options:左滑出现的内容
    <uni-swipe-action-item :right-options="options" :left-options="options" @click="onClick" @change="change">
        <view>这里是未滑动之前显示的内容</view>
    </uni-swipe-action-item>
</uni-swipe-action>

export default {
  data(){
    return {
      options:[
        {
            text: '取消',
            style: {
                backgroundColor: '#007aff'
            }
        }, {
            text: '确认',
            style: {
                backgroundColor: '#dd524d'
            }
        }
      ]
    }
  },
  methods:{
    onClick(e){
        //点击选项按钮时触发事件	
        //e = {content,index} ,content(点击内容)、index(下标)、position (位置信息)
    },
    swipeChange(e){
     	//组件打开或关闭时触发	
        // left:左侧 ,right:右侧,none:关闭
    }
  }
}

效果如下

优点:兼容性好跨全端、顺滑、轻量 

缺点:只能够设置文字版本、还有比如动画没有回弹之类的

2-如何改造swiper-action 让他能够支持图片

1、首先找到uni-modules下面的swiper-action

大家可以通过搜索right或者left来定义到自己想要修改的部分。因为对于微信小程序和h5 他是使用wxs来实现的,app nvue端使用的是 bindingx 而支持的其他平台使用的是 js

(因为我这里只有小程序和h5的需求因此我只修改了这一部分,大家有其他需求可以按需修改)

 通过阅读他的源码不难找出 他的item中只支持文字版本,所以我们只需要添加image标签就可以了,添加代码如下:

首先添加了image标签,并且设置了动态传入的属性,

isImage:代表是否是传入图片 如果是图片则不显示文字部分(当然如果大家需要文字图片同时出现的就可以不添加这个属性)

src:传入图片的地址,这里建议最好使用网络地址,本地地址图片打包的时候容易出现位置错乱找不到图片的问题 

imgWidth和imgHeight:就是图片的宽高

	<image class="uni-swipe_img" v-if="item.isImage" :src="item.src" :style="{
							width:item.style.imgWidth,
							height:item.style.imgHeight
						}" />
						<text v-else class="uni-swipe_button-text"
							:style="{color: item.style && item.style.color ? item.style.color : '#FFFFFF',}">{{ item.text }}</text>

做完这一步,option传入内容为

options: [{
					isImage: true,
					src: './delete.png',//这里只是为了演示,建议使用网络图片
					style: {
						backgroundColor: '#E02E00',
						imgWidth: '64rpx',
						imgHeight: '72rpx'
					}
				}]
			}

效果:

大家都要善于使用并且改造轮子哦~加油! 

有关【uni-app】uniapp如何实现左滑删除以及改造uni-ui中的swiperAction的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  3. ruby - i18n Assets 管理/翻译 UI - 2

    我正在使用i18n从头开始​​构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在ruby​​onrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi

  4. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  5. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  6. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  7. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  8. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  9. ruby - 如何每月在 Heroku 运行一次 Scheduler 插件? - 2

    在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/

  10. ruby-on-rails - 如何从 format.xml 中删除 <hash></hash> - 2

    我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为

随机推荐