appcan用mvvm实现下拉刷新和上拉加载
来源:互联网 发布:yy主播拍的网络大电影 编辑:程序博客网 时间:2024/06/06 05:20
关于MVVM的理论,网上说的已经比较多了,最近需要快速开发开发一个app,采用了appcan,用MVVM模式开发起来还是比较顺手的,学习周期大约一周,先开发了接口,然后开始app开发,对于scrollview的下拉刷新,官方是有例子的,比较容易实现,但是上拉加载和分页这些没有完整的例子啥的,会耽误点时间,我把代码粘出来,希望能帮一些同类节省点时间,话不多说,上代码:
appcan.ready(function() { $.scrollbox($("body")).on("releaseToReload", function() { //After Release or call reload function,we reset the bounce $("#ScrollContent_5VO035").trigger("reload", this); }).on("onReloading", function(a) { //if onreloading status, drag will trigger this event }).on("dragToReload", function() { //drag over 30% of bounce height,will trigger this event }).on("draging", function(status) { //on draging, this event will be triggered. }).on("release", function() { //on draging, this event will be triggered. }).on("scrollbottom", function() { //on scroll bottom,this event will be triggered.you should get data from server $("#ScrollContent_5VO035").trigger("more", this);//看这里,需要在这里添加上拉加载更多的事件触发 }).reload(); })
Services层面:
var Service_artist = new MVVM.Service({ pretreatment: function(data, option) { return data; }, dosuccess: function(data, option) { closeLoading(); return data.data; }, doerror: function(e, err, option) { closeLoading(); appcan.window.openToast({ msg:'请求数据出错', duration:3000, position:5, type:0 }); return err; }, validate: function(data, option) { if(data.code == 1000){ return 0; }else{ return 1; } }, ajaxCall: function(data, option) { var self = this; appcan.request.ajax({ url: '你的api接口地址', type: "GET", data: '', dataType: "json", contentType: "application/x-www-form-urlencoded", success: function(data) { var res = self.validate(data, option); if (!res) option.success(self.dosuccess(data, option)); else option.error(self.doerror(data, res, option)); }, error: function(e, err) { option.error(self.doerror(e, err, option)); } }); }});Model层面:
var Model_Collection_artist = MVVM.Model.extend({ defaults: {}, computeds: {}, sync: function(method, model, options) { switch (method) { case "create": break; case "update": break; case "patch": break; case "delete": break; default: break; } }});
Collection层面:
var Collection_artist = new(MVVM.Collection.extend({ initialize: function() { return; }, parse: function(data) { //console.log(data); totalpage = data.totalpage; //接口返回的总页数 return data.writers_list;//这是个JSON的array,包含了构造model对象的JSON对象 }, model: Model_Collection_artist, sync: function(method, collection, options) { switch (method) { case "read": openLoading(); Service_artist.request(options.attrs, options); break; default: break; } }}))();ViewModel层面:
var ViewModel_artist = new(MVVM.ViewModel.extend({ el: "#ScrollContent_5VO035", events: { "reload": function(ev, param) { totalpage = 0; curpage = 1; this.collection.fetch({ "success": function() { //debugger; param.reset(); }, "error": function() { //debugger; param.reset(); } }) }, "more":function(ev,param){ //关键的代码就在这里 //alert(curpage+"======"+totalpage); if(curpage<totalpage){ curpage = curpage+1; this.collection.fetch({remove: false});//加载更多时需要加这一句,不然数据会被覆盖,关键点就在这里 param.reset();//这个也比较关键,没有这个,会导致后面不执行加载 } // this.collection.fetch({remove: false}); // param.reset(); }, }, initialize: function() { return; }, collection: Collection_artist, itemEvents: {}}))();
最后揭露一下事实的真相:http://www.css88.com/doc/backbone/,appcan也是封装的这个框架,所有有问题的时候,多到这个地方参悟,自然就解决了。
阅读全文
0 0
- appcan用mvvm实现下拉刷新和上拉加载
- appcan实现下拉刷新,上拉加载更多。
- Appcan listview上拉加载下拉刷新
- 4.0 appcan 下拉刷新上拉加载
- Appcan listview上拉加载下拉刷新源码
- appcan 下拉加载上拉加载样式
- SwipeRefreshLayout和RecyclerView实现下拉刷新和上拉加载
- 使用PullToRefresh实现下拉刷新和上拉加载
- 下拉刷新和上拉加载更多实现方法
- 使用PullToRefresh实现下拉刷新和上拉加载
- 使用PullToRefresh实现下拉刷新和上拉加载
- PullToRefresh实现下拉刷新和上拉加载
- PullToRefresh实现下拉刷新和上拉加载
- PullToRefresh实现下拉刷新和上拉加载
- 使用PullToRefresh实现下拉刷新和上拉加载
- PullToRefresh实现下拉刷新和上拉加载
- 使用PullToRefresh实现下拉刷新和上拉加载
- 使用PullToRefresh实现下拉刷新和上拉加载
- PHP isset()与empty()的使用区别详解
- 每日一发Python---Python中大佬都知道的内置函数,你不知道就out了
- html5 datepicker 使用
- 最优调度问题
- django 自定义404页面
- appcan用mvvm实现下拉刷新和上拉加载
- 如何修改Android应用的图标,名称
- Java 并发集合的实现原理
- JMeter-Sampler-HTTP请求
- ##ECMAScript6知识点
- vue 饿了么开发遇见的问题(1)
- 单例模式
- Linux的常用指令
- 实用Chrome插件-OneTab