uni-app中wap2app原生下拉pullToRefresh如何更新list的dom而不是刷新网页
uni-app中wap2app原生下拉pullToRefresh如何更新list的dom而不是刷新网页
文档:http://ask.dcloud.net.cn/docs/#//ask.dcloud.net.cn/article/12749
文档说wap2app框架提供了原生的下拉刷新pullToRefresh
但是下拉刷新是刷新网页的,我只想更新dom,怎么实现呢?
如果开发者想要下拉刷新用于更新list的dom而不是刷新网页,需要在app.js中进行强化编程。
你倒是说说怎么个强化法呀???
app.js的教程中没有说明,翻了官方发的所有wap2app文档都木有看见相关说明。
到底是我看得不认真还是没有写出这个方法?


更多关于uni-app中wap2app原生下拉pullToRefresh如何更新list的dom而不是刷新网页的实战教程也可以访问 https://www.itying.com/category-93-b0.html
app.js中可以注册页面,比如list页面,然后在该页面的onShow函数中通过5+ API自定义下拉刷新功能。
5+下拉刷新参考:http://www.html5plus.org
参考 hellowap2app 示例工程中,自定义下拉刷新在 app.js 中的具体实现。
更多关于uni-app中wap2app原生下拉pullToRefresh如何更新list的dom而不是刷新网页的实战教程也可以访问 https://www.itying.com/category-93-b0.html
你是需要直接更新dom而不是刷新页面,也就是需要自定义下拉刷新逻辑,那么就不能通过配置pullToRefresh 节点来处理,通过节点配置就会走框架的下拉刷新逻辑,
自定义的话,首先删除sitemap中的配置,然后在首页如下:
Page(’__W2A__www.baidu.com’, { //首页扩展配置
onShow: function() {
console.log(‘show main page’);
var launch = plus.webview.getLaunchWebview();
launch.setPullToRefresh({
support: true,
style: ‘circle’,
height: ‘50px’,
range: ‘200px’
}, function() {
console.log(‘pullrefresh****’); // 自定义下拉刷新逻辑
launch.endPullToRefresh(); //需调用结束Webview窗口的下拉刷新
})
},
onClose: function() {
}
});
明白了,非常感谢
在ios 手机上运行,刷新功能不起作用是什么原因呀
没搞过w2a项目,但是既然是在webview里面打开的网页,那方法应该跟APP中打开网页差不多,试试用evalJS方法去调用web的方法刷新list,而不是直接刷新整个web
1小时过去了
首页之外的页面自定义下拉刷新,但是首页不能自定义下拉刷新
代码:
Page(’__W2A__www.baidu.com’, { //首页扩展配置
onShow: function() {
console.log(‘show main page’);
plus.webview.getLaunchWebview().setPullToRefresh({}, function(){
console.log(‘main page reload’);
});
},
onClose: function() {
}
});
下拉之后的输出:
正在建立手机连接…
正在同步手机端程序文件…
iOS设备可使用console.log()输出内容到控制台,但是可能只能输出plusready之后的调试内容
请手动重启手机上的 HBuilder 调试基座App…
[LOG] : hide
wap2app[3.6.1]开始注入
[LOG] : [W2A]:init
[LOG] : show main page
现象是直接刷新页面。没有执行console.log(‘main page reload’);
你好想问一下这个怎么关闭的这个下拉图标,在数据回来之后
您好,下拉刷新网页可否不需要配置url参数添加代码默认开启全局下拉刷新网页?很需要这个希望大佬可以探索一下
在uni-app中,当使用wap2app(通常指的是从wap网页封装成app)进行开发时,实现原生下拉刷新(pullToRefresh)功能并更新列表的DOM而不刷新整个网页,可以通过以下步骤实现。以下是一个示例代码案例,展示如何在uni-app中实现这一功能。
首先,确保你的pages.json
中配置了页面的下拉刷新属性:
{
"pages": [
{
"path": "pages/index/index",
"style": {
"navigationBarTitleText": "首页",
"enablePullDownRefresh": true
}
}
]
}
然后,在你的页面脚本文件(如pages/index/index.vue
)中,实现下拉刷新事件的处理逻辑:
<template>
<view>
<scroll-view scroll-y="true" @scrolltolower="loadMore">
<view v-for="(item, index) in list" :key="index">
{{ item }}
</view>
</scroll-view>
</view>
</template>
<script>
export default {
data() {
return {
list: [] // 初始列表数据
};
},
onLoad() {
this.refreshData(); // 页面加载时初次获取数据
},
methods: {
// 模拟从服务器获取数据
async fetchData() {
// 这里可以替换为实际的API请求
return new Promise(resolve => {
setTimeout(() => {
resolve(['Item 1', 'Item 2', 'Item 3']); // 模拟返回的数据
}, 1000);
});
},
async refreshData() {
this.list = await this.fetchData();
uni.stopPullDownRefresh(); // 停止下拉刷新动画
},
onPullDownRefresh() {
this.refreshData(); // 下拉刷新时重新获取数据
},
loadMore() {
// 加载更多数据的逻辑,这里省略
}
}
};
</script>
<style>
/* 样式部分省略 */
</style>
在上述代码中,我们做了以下几件事:
- 在
pages.json
中配置了页面的enablePullDownRefresh
属性,启用了下拉刷新功能。 - 在页面脚本中,定义了一个
list
数组用于存储列表数据。 - 在
onLoad
生命周期钩子中,调用refreshData
方法获取初始数据。 - 定义了
fetchData
方法模拟从服务器获取数据,可以根据实际情况替换为实际的API请求。 - 实现了
refreshData
方法,该方法调用fetchData
获取新数据,并在数据获取成功后调用uni.stopPullDownRefresh
停止下拉刷新动画。 - 监听页面的
onPullDownRefresh
事件,当触发下拉刷新时调用refreshData
方法。
这样,当用户下拉刷新页面时,只会更新列表的DOM而不会刷新整个网页。