1 Star 0 Fork 0

zhengchen/avalon

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
avalon.pagination.js 5.05 KB
一键复制 编辑 原始数据 按行查看 历史
qincheng 提交于 2014-02-15 08:46 . 优化avalon.nextTick
define(["avalon", "text!avalon.pagination.html"], function(avalon, tmpl) {
var styleEl = document.getElementById("avalonStyle")
var cssText = ".ui-pagination{ padding:6px 4px; overflow:hidden;} " +
".ui-pagination a{ padding: 2px 8px;text-decoration: none;text-align:center; float:left;}" +
".ui-pagination a.ui-pagination-ellipsis{padding: 2px 0px;text-decoration: none;text-align:center;}"
try {
styleEl.innerHTML += cssText
} catch (e) {
styleEl.styleSheet.cssText += cssText
}
function getPages(vm) {
var c = vm.currentPage, p = Math.ceil(vm.total / vm.perPages), pages = [], s = vm.showPages, max = p,
left = c, right = c
//一共有p页,要显示s个页面
vm.maxPage = max
if (p <= s) {
for (var i = 1; i <= p; i++) {
pages.push(i)
}
} else {
pages.push(c)
while (true) {
if (pages.length >= s) {
break
}
if (left > 1) {//在日常生活是以1开始的
pages.unshift(--left)
}
if (pages.length >= s) {
break
}
if (right < max) {
pages.push(++right)
}
}
}
vm.firstPage = pages[0]
vm.lastPage = pages[pages.length - 1]
return pages//[0,1,2,3,4,5,6]
}
var widget = avalon.ui.pagination = function(element, data, vmodels) {
var $element = avalon(element)
var options = data.paginationOptions
$element.addClass("ui-pagination ui-widget-header ui-corner-all ui-buttonset ")
var model = avalon.define(data.paginationId, function(vm) {
avalon.$skipArray = ["perPages", "showPages", "currentIndex", "total", "ellipseText"]//这些属性不被监控
avalon.mix(vm, options)
vm.$skipArray = ["alwaysShowPrev", "alwaysShowNext"]
vm.jumpPage = function(event, page) {
event.preventDefault()
if (page !== vm.currentPage) {
switch (page) {
case "first":
vm.currentPage = 1
break
case "last":
vm.currentPage = vm.maxPage
break
case "next":
vm.currentPage++
if (vm.currentPage > vm.maxPage) {
vm.currentPage = vm.maxPage
}
break
case "prev":
vm.currentPage--
if (vm.currentPage < 1) {
vm.currentPage = 1
}
break
default:
vm.currentPage = page
break
}
vm.pages = getPages(vm)
}
}
vm.pages = getPages(vm)
vm.getPages = getPages
})
avalon.nextTick(function() {
if (model.alwaysShowPrev) {
tmpl = tmpl.replace('ms-if="firstPage!==1"', "")
}
if (model.alwaysShowNext) {
var index = 0
tmpl = tmpl.replace(/ms-if="lastPage!==maxPage"/g, function(a){
index++
if(index == 3){
return ""
}else{
return a
}
})
}
element.innerHTML = tmpl
avalon.scan(element, [model].concat(vmodels))
})
return model
}
widget.defaults = {
perPages: 10, //每页显示多少条目
showPages: 10, //一共显示多页,从1开始
currentPage: 1, //当前被高亮的页面,从1开始
total: 200,
pages: [], //装载所有要显示的页面,从1开始
nextText: ">",
prevText: "<",
ellipseText: "",
firstPage: 0, //当前可显示的最小页码,不能小于1
lastPage: 0, //当前可显示的最大页码,不能大于maxPage
maxPage: 0, //通过Math.ceil(vm.total / vm.perPages)求得
alwaysShowNext: false,//总是显示向后按钮
alwaysShowPrev: false,//总是显示向前按钮
getHref: function(page) {
return "?page=" + page
},
getTitle: function(a) {
switch (a) {
case "first":
return "Go To First Page"
case "prev":
return "Go To Previous Page"
case "next":
return "Go To Next Page"
case "last":
return "Go To Last Page"
default:
return "Go to page " + a + ""
}
}
}
return avalon
})
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/cowboy13/avalon.git
git@gitee.com:cowboy13/avalon.git
cowboy13
avalon
avalon
master

搜索帮助

D67c1975 1850385 1daf7b77 1850385